0

一段时间以来一直被困在一个问题上,但还没有找到最好的解决方案。我正在从驻留在服务器上的 javascript 调用 xmlhttprequest (POST) 说“http://localhost:8080”到另一台服务器“http://localhost:9090”

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

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

4

1 回答 1

0

由于尝试通信的实体的来源在主机部分相同,但在端口部分不同(localhost:8080 <-> localhost:9090)——这违反了相同的来源策略,浏览器会抛出错误。有关更多信息,请参见:http ://en.wikipedia.org/wiki/Same_origin_policy

解决这个问题的方法是在服务器返回的 HTTP 响应中使用 CORS 标头。您使用 XHR 生成 HTTP 请求这一事实没有任何区别。基本上,您需要做的是在您对 POST 请求的响应中添加一个Access-Control-Allow-Origin: *或。这当然假设您可以控制要发布到的服务器资源,以便您可以修改响应标头。有关更多信息,请参见:http: //enable-cors.org/http://en.wikipedia.org/wiki/Cross-Origin_Resource_SharingAccess-Control-Allow-Origin: http://localhost:8080http://localhost:9090

于 2012-09-17T18:59:54.447 回答