Ajax和受限制的uri
时间:2020-03-05 18:51:45 来源:igfitidea点击:
我想对其他服务器(相同的域和地址,只是不同的端口)进行ajax调用。
例如
我的页面是
http://localhost/index.html
我想提出一个ajax的请求到:。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
http://localhost:7076/?word=foo
我收到此错误:
Access to restricted URI denied (NS_ERROR_DOM_BAD_URI)
我知道我们无法向其他域发出Ajax请求,但是似乎这还包括不同的端口?有什么解决方法吗?
解决方案
回答
在端口80服务器代理请求到其他端口上有特定页面。例如:
http://localhost/proxy?port=7076&url=%2f%3fword%3dfoo
请注意最后一个查询字符串参数值上的url编码。
回答
我们可以使用JSONP。在这里,我们可以使用请求指定回调,而来自ajax请求的响应将被包装为回调函数名称。无需使用XmlHttpRequest,而是将带有URL的标签插入HTML文档。然后,当检索到响应时,将调用回调函数,并将数据作为参数传递。
查看此博客文章以获取示例
回答
这是浏览器的限制。所有JavaScript调用都必须指向脚本宿主的相同服务器和端口。这将需要服务器端解决。 IE。让localhost处的进程将请求转发到localhost:7076.
回答
很烂,但这是必要的...基本上,我们需要做的是通过本地代理来代理AJAX请求,其中一些服务器端脚本/页面/我们所处的同一域上的任何内容都将接收到该呼叫并将其转发到另一资源服务器端。我们可能会做一些IFRAME技巧,但我认为它们的效果不是很好。