Ajax和受限制的URI
问题描述:
我想对另一个服务器(相同的域和框,只是不同的端口)进行ajax调用。Ajax和受限制的URI
我的页面是
http://localhost/index.html
我想提出一个AJAX GET请求:
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文档中。然后,当检索到响应时,调用回调函数,将数据作为参数传递。
入住这blog post出了一个例子
答
这是一个浏览器的限制。所有的JavaScript调用都必须与脚本主目录中的同一台服务器和端口相同。这将需要服务器端来解决。 I.E.请求localhost
将请求转发至localhost:7076
。
答
它很糟糕,但它是必要的...基本上你需要做的是通过本地代理代理你的AJAX请求 - 一些服务器端脚本/页面/无论你在同一个域名 - 接收呼叫并将其转发到其他资源服务器端。可能会有一些IFRAME技巧你可以做,但我认为他们工作得很好......虽然可能是错误的,但已经有一段时间了。