我遇到了一個問題,我的Angular JS應用程序的交叉源請求在Chrome中工作正常,但在Firefox中無法正常工作。在Firefox中阻止Cross Origin請求
在Firefox中收到的錯誤是:
跨來源請求阻止:同源策略不允許讀 遠程資源的https://api.domain.eu/join/joinstatus。 (原因: CORS頭'Access-Control-Allow-Origin'不匹配 'https://www.domain.eu, https://www.domain.eu')。
我可以提出請求成功,直到我的Authorization
頭添加到請求。
我的服務器(ASP.Net的Web API運行在IIS)具有如下標題設置:
Access-Control-Allow-Origin: https://www.domain.eu
Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE
Access-Control-Allow-Headers: Authorization
Access-Control-Allow-Credentials: true
Firefox的成功預航班與OPTIONS
請求的請求。通過查看我可以看到發送的Origin
標題包含在返回的Access-Control-Allow-Origin
標題中。
事實上,由於某種原因,返回的Access-Control-Allow-Origin
標題有兩次我的域名(儘管在配置中指定了它一次),例如
Access-Control-Allow-Origin: https://www.domain.eu, https://www.domain.eu
這且不說正是在這方面,Firefox和Chrome之間的區別?
我還需要做些什麼才能在Firefox中使用?
UPDATE
我注意到,如果我把我的頭如下...
`訪問控制允許來源:https://www.domain.eu「
...那麼預-flight OPTIONS
請求正常工作。 Access-Control-Allow-Origin
標頭與相同的請求和響應。但是,實際的GET
請求會因上述錯誤而失敗。
如果我修改我的標題如下:
Access-Control-Allow-Origin: https://www.domain.eu, https://www.domain.eu
...(這是Firefox的錯誤暗示的),那麼實際的飛行前OPTIONS
請求失敗,因爲這時候僅僅火狐希望標題中有一個值爲https://www.domain.eu
。
請求中發送的實際「Origin」HTTP頭的值是什麼?這是不同於從Firefox發送的請求?您引用的錯誤消息似乎表明請求中的「Origin」標頭具有「https://www.domain.eu,https:// www.domain.eu」,這應該永遠不會發生。 「Origin」標題應該是單一來源。 – sideshowbarker