我在主操作系統(Windows7 Pro)上運行Java服務,我可以通過http://localhost:8080/...
訪問它。它返回有效的JSON reposnse。
我還有一個SPA寫在angularjs
,位於我的虛擬機上,我爲它創建了一個虛擬主機(用於更舒適的訪問)。虛擬機操作系統是Ubuntu Server 12.04.X LTS。由於那些環境是彼此分離的網絡條件,我試圖通過本地機器IP地址X.X.X.X:8080
(pinging通過終端確實發送響應)來訪問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.
您需要在您的java服務上啓用跨源資源共享(CORS)。 –
試圖啓用它,因爲它在這裏解釋http://cxf.apache.org/docs/jax-rs-cors.html,但無論如何沒有幫助。 – Eugene
確保您已將CORS攔截器添加到您的jax-rs服務器。如果您按照Apache CXF的說明操作,CORS就可以工作。 –