2016-08-25 60 views
0

我正在開發一個概念驗證Web應用程序,它應該向服務器(SAP ABAP系統)發送GET請求。該服務器提供ODATA REST服務。當我只將服務的URI粘貼到瀏覽器的地址欄中時,即可立即顯示所需的內容。但是,當我嘗試通過Web應用程序(使用jQuery的AJAX)發出請求,發生CORS相關的問題:CORS來自瀏覽器的HTTP請求與本地託管的Web應用程序

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:XXXXX' is therefore not allowed access. The response had HTTP status code 401. 

我的代碼和進一步的問題,我與HTTP請求其可以在這個post被發現。 我不明白爲什麼來自瀏覽器(或小提琴手)的請求似乎沒有任何問題,但一旦我從應用程序發送請求(本地託管在本地),就會發生CORS問題。而且僅供參考,我無法訪問服務器端代碼,因此不可能編輯「Access-Control-Allow-Origin」部分。

+0

同樣的問題在這裏問,也許它是類似於你的問題。 http://stackoverflow.com/questions/18642828/origin-http-localhost3000-is-not-allowed-by-access-control-allow-origin –

+0

是的,但人們似乎正在解決這個問題,只需添加「Access- Control-Allow-Origin:*「到響應頭。正如我所說的,我無法訪問任何服務器端代碼。 – doktormatte

+0

然後這是不可能的,我們必須允許服務器端的跨域請求接受跨域請求。 –

回答

0

您是否有權訪問提供網頁的服務器?如果是的話,我會通過您自己的服務器將請求轉發到遠程服務器。

這意味着您的頁面會詢問您的服務器,然後服務器會詢問遠程服務器。

這樣就不會發生CORS。

0

如果您無法訪問服務器端代碼,並且您確定始終提出GET請求,則可以使用JSONP。但仍然使用Response頭解析CORS是最佳解決方案。

+0

我已經使用JSONP來製作請求。與此方法相關的問題在這篇文章中討論:http://stackoverflow.com/questions/39099459/uncaught-syntaxerror-unexpected-token-after-successful-http-request/ – doktormatte

0

跨域資源共享(CORS)是一種機制,它允許從源域外的其他域請求網頁上的許多資源(例如字體,JavaScript等)。

當您直接從瀏覽器發出請求(通過輸入url),CORS不會生效。但是,如果您從瀏覽器發出AJAX請求,它也會被阻止。

如果您仍然希望通過瀏覽器向資源提出請求,您需要一些擴展程序,例如適用於Chrome的Allow-Control-Allow-Origin: *和適用於Firefox的適用於各處的cors。

相關問題