【问题标题】:Xmlhttprequest Cross site domain issue?Xmlhttprequest 跨站点域问题?
【发布时间】:2012-09-18 19:13:09
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript xmlhttprequest


    【解决方案1】:

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

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

    【讨论】:

    • 伊万,感谢您的回复。作为 webdevlpment 的资深人士,我对服务器配置的想法较少。我使用 jboss 作为我的网络服务器,所以知道我需要使用 jboss 中的响应头更新哪个文件。
    • @user1678386 不,很遗憾没有,因为我没有使用 jboss 或 java 的经验。您需要的是一种在资源返回的响应上设置一些标头的方法,所以我想谷歌搜索“jboss set headers response”或“jboss add custom headers”会让您得到答案。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 2010-09-28
    • 2011-10-14
    • 2014-04-04
    • 2011-03-09
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多