2016-06-11 20 views
2

我正在構建一個需要向服務器發送基本身份驗證(https://en.wikipedia.org/wiki/Basic_access_authentication)的CORS(跨源資源共享)POST請求的Angular 2應用程序。使用Angular 2中的基本身份驗證預檢CORS請求

我很好地爲POST請求本身設置了Authorization標頭,但由於它是CORS,因此瀏覽器首先會自動發送預檢OPTIONS請求。 不幸的是,服務器配置錯誤(Why does the preflight OPTIONS request of an authenticated CORS request work in Chrome but not Firefox?),並且在預檢時也需要Basic Auth。它是第三方服務器,我無法更改它。

有沒有辦法解決它(例如添加Authorizion頭預檢查,禁用預檢,...)?

回答

3

預檢請求僅由瀏覽器進行,以檢查是否設置了CORS標頭。如果它沒有得到所需的頭文件,那麼你就無能爲力。它只是不會發出實際的POST請求。

你實際上可以做的是從你控制的服務器發出請求。爲您的客戶端提供一個API來調用您的服務器,然後調用錯誤配置的服務器並將響應轉發給您的瀏覽器客戶端。

+0

「...由服務器製作...」 - 您的意思是瀏覽器,對吧?是的,這就是我想的......謝謝Günter。 –

+0

對不起,修正了。 –

+1

沒錯,那就是我接下來要去的地方。良好的所有服務器端,我都在控制之下:-) –