2012-09-17 111 views
0

一直存在問題,並沒有得到最好的解決方案。 我打電話從一個javascript駐留在服務器一個XMLHttpRequest(POST)說的「http://本地主機:8080」到另一臺服務器的「http://本地主機:9090」Xmlhttprequest跨站點域問題?

獲得一個瀏覽器錯誤如下所述: 異常...「組件返回失敗代碼:0x80004005(NS_ERROR_FAILURE)」nsresult:「0x80004005(NS_ERROR_FAILURE)」 該錯誤並沒有指出任何具體的任何。從相同的服務器調用測試相同,工作正常。但我正在看兩個服務器架構。

任何解析/想法?查看將跨域來源設置爲'*'的響應標題的帖子,但不確定如何爲xmlhhtprequest調用設置響應標頭?

回答

0

由於嘗試通信的實體的起源在主機部分相同,但端口部分不同(localhost:8080 < - > localhost:9090) - 這違反了相同的源策略和瀏覽器拋出一個錯誤。有關詳細信息,請參閱以下內容:http://en.wikipedia.org/wiki/Same_origin_policy

解決此問題的方法是在服務器返回的HTTP響應中使用CORS標頭。您使用XHR生成HTTP請求的事實沒有任何區別。基本上,您需要做的是將Access-Control-Allow-Origin: *Access-Control-Allow-Origin: http://localhost:8080添加到對http://localhost:9090的POST請求的響應中。這當然假設您可以控制要發佈的服務器資源,以便可以修改響應標頭。查看更多信息:http://enable-cors.org/http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing

+0

Ivan,謝謝你的回覆。作爲網絡設計大師,我對服務器配置的想法不多。我使用jboss作爲我的網絡服務器,所以我想知道哪個文件需要使用jboss中的響應頭進行更新。 – Aki

+0

@ user1678386不,不幸的是,因爲我沒有使用jboss或java的經驗。你需要的是一種設置資源返回響應頭的方法,所以我想用「jboss set headers response」或者「jboss add custom headers」來搜索你的答案。祝你好運! –