2017-10-19 462 views
1

我對AngularJS和基於令牌的身份驗證完全陌生。其實我想用AngularJS框架作爲我的前端,而API作爲後端。因此,我遵循了一些來自互聯網的教程,並附上我的代碼https://github.com/mmSebastian/angularjsWebAPI(原因:CORS頭'Access-Control-Allow-Origin'不匹配'(null)')

當我嘗試登錄我的web應用程序,我面對下面的錯誤在我的瀏覽器:

  • 火狐

跨來源請求阻止:同源策略不允許讀的遠程資源http:// localhost:50987 /令牌。 (原因:CORS頭'Access-Control-Allow-Origin'不匹配'(null)')。

無法加載的http://本地主機:50987 /令牌:在 '訪問控制允許來源' 標頭包含多個值 '*,*',但只有一個是允許。原因「http:// localhost:52386」因此不被允許訪問。

  • 邊緣

SEC7128:多訪問控制允許來源頭部沒有允許CORS響應。

但是,當我通過郵遞員運行http:// localhost:50987/token時,它工作正常。

我已經嘗試過下面的鏈接,但仍然無法解決它。請幫助。

  1. Angularjs: Why does adding an authorization header cause a -1 status response?

  2. MVC web api: No 'Access-Control-Allow-Origin' header is present on the requested resource

+0

歡迎來到StackOverflow,我強烈建議你通過[this](https://stackoverflow.com/help/mcve)來改善你的問題,從而增加獲得正確答案的機會。 – McMutton

+0

您能告訴我們您的客戶端發送到服務器的Origin頭的價值是什麼? – McMutton

+0

@McMutton我很抱歉我的語言。客戶端將是http:// localhost:52386,而服務器將是http:// localhost:50987。可能我不能很好地表達,因此我附上了代碼。 – mmSebastian

回答

0
CORS

(交叉原點)需要來自瀏覽器製成具有完全相同的域服務器的HTTP請求。

例如從本地主機:8080到本地主機:8080的請求將工作

例如,本地主機:8080到localhost:8081的請求將不起作用

而且您將收到CORS錯誤。這只是由瀏覽器執行,因此POSTMAN將正常工作。

要解決此問題,添加您的服務器例如: -

Access-Control-Allow-Origin: * 

您可能需要您的服務器上添加其他接入控制 - 頭在相關CORS標頭。

或者,您可以讓您的Web服務器將某些請求直接代理到您的後端,從而繞過瀏覽器中的CORS實施。

+0

感謝您的信息。我添加了相關的CORS頭文件,但似乎不起作用。我在https://github.com/mmSebastian/angularjsWebAPI附上我的代碼。你想介意糾正我在哪裏做錯了嗎? – mmSebastian