Xmlhttprequest跨站点域名问题?

时间:2012-09-17 18:51:00

标签: javascript xmlhttprequest

一段时间以来一直遇到问题,但还没有得到最好的解决方案。 我从驻留在服务器的javascript调用xmlhttprequest(POST),将'http:// localhost:8080'调用到另一个服务器'http:// localhost:9090'

获取浏览器错误如下所述: 异常......“组件返回失败代码:0x80004005(NS_ERROR_FAILURE)”nsresult:“0x80004005(NS_ERROR_FAILURE)” 错误也没有指出任何具体的内容。通过从同一台服务器调用测试相同并且工作正常。但我正在研究两种服务器架构。

任何决议/想法?看到有关将跨域来源设置为“*”的响应标头的帖子很少,但不确定如何为xmlhhtprequest调用设置响应标头?

1 个答案:

答案 0 :(得分:0)

由于尝试通信的实体的来源在主机部分中相同但在端口部分中不同(localhost:8080< - > localhost:9090) - 这违反了相同的原始策略和浏览器抛出错误。有关详情,请参阅此处:http://en.wikipedia.org/wiki/Same_origin_policy

解决此问题的方法是在服务器返回的HTTP响应中使用CORS头。您使用XHR生成HTTP请求这一事实没有任何区别。基本上,您需要做的是为Access-Control-Allow-Origin: *的POST请求的回复添加Access-Control-Allow-Origin: http://localhost:8080http://localhost:9090。当然,这假定您可以控制要POST的服务器资源,以便您可以修改响应头。有关详情,请参阅此处:http://enable-cors.org/http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing