您的代碼導致您的瀏覽器發送重定向的CORS preflight OPTIONS request。
瀏覽器當前拒絕在這種情況下遵循重定向,因爲CORS規範以前需要使用瀏覽器來執行此操作。限制實際上已不在規範中,但瀏覽器需要更新其實現以符合規範更改。
您可能可以調整您的代碼,以避免觸發瀏覽器發送OPTIONS請求。
至於什麼一切是怎麼回事針對這種情況,首先要注意的一點是,瀏覽器做了CORS預檢,如果:
- 請求的方法是什麼,不是GET,HEAD或POST
- 你設置比其他自定義請求頭
Accept
,Accept-Language
,Content-Language
,Content-Type
,DPR
,Downlink
,Save-Data
,Viewport-Width
,或Width
- 的
Content-Type
請求頭具有比application/x-www-form-urlencoded
,multipart/form-data
以外的值,或text/plain
如果你不能改變你的代碼,以避免需要瀏覽器做了預檢,那麼另一個選擇是:
- 檢查響應並查看服務器在OPTIONS之後重定向到的URL。
- 更改您的代碼,直接向該其他網址發送請求。
有關可能的解決方法的詳細信息,請參閱CORS request with Preflight and redirect: disallowed. Workarounds?的答案。
另外如上所述,瀏覽器不遵循重定向CORS預檢的規則不再在規範中,但瀏覽器需要更新他們的實現以符合規範更改。
感謝您的回答。我會按照你的意見。我的應用程序需要將Content-Type應用程序/ json發送到服務器,以便觸發預先運行。我無法改變這一點。 – n179911
好的,但請注意[此修補程序已登陸Blink/Chromium源代碼](https://chromium.googlesource。com/chromium/src/+/eaeb7a5f8e9432594d8bcc09956c1f50e8f0ba66),但將在3月中旬推出的Chrome 57中發佈。但與此同時,如果您想對其進行測試,則可以下載[當前版本的Chrome Beta](https://chromereleases.googleblog.com/2017/02/beta-channel-update-for-desktop_8.html) ,這已經有了變化。 – sideshowbarker