2014-02-13 72 views
4

我在主操作系統(Windows7 Pro)上運行Java服務,我可以通過http://localhost:8080/...訪問它。它返回有效的JSON reposnse。

我還有一個SPA寫在angularjs,位於我的虛擬機上,我爲它創建了一個虛擬主機(用於更舒適的訪問)。虛擬機操作系統是Ubuntu Server 12.04.X LTS。由於那些環境是彼此分離的網絡條件,我試圖通過本地機器IP地址X.X.X.X:8080pinging通過終端確實發送響應)來訪問Java服務。由於正常的$http使用不起作用,我試着在這個答案How to load a cross-domain JSON with $http in angularjs 1.0.8 as it does with 1.2.0建議的解決方案,但要麼它太舊了,要麼是別的什麼是錯誤的,但是當我嘗試做同樣的事情時,它不起作用。在控制檯我只看到以下

XMLHttpRequest cannot load http://X.X.X.X:8080/library/api/books. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://dev.xxx' is therefore not allowed access.

+3

您需要在您的java服務上啓用跨源資源共享(CORS)。 –

+0

試圖啓用它,因爲它在這裏解釋http://cxf.apache.org/docs/jax-rs-cors.html,但無論如何沒有幫助。 – Eugene

+1

確保您已將CORS攔截器添加到您的jax-rs服務器。如果您按照Apache CXF的說明操作,CORS就可以工作。 –

回答

0

謝謝大家對他們的意見。不能說我的解決方案是正確的,但我得到的結果是我期待的。

我在這裏找到的合併信息Filter requests for CORS來自這個問題的回答Java/Jetty: How to Add Filter to Embedded Jetty。我不知道如何添加一個過濾器,它會監聽請求並相應地設置響應頭。

希望解決方案能夠幫助那些可能會遇到同樣情況的人。