簡體   English   中英

使用Chrome / WebKit調試Access-Control-Allow-Origin

[英]Debugging Access-Control-Allow-Origin with Chrome/WebKit

我正在嘗試使用Access-Control-Allow-Origin和相關標頭的跨源資源共享 我有它在Firefox上工作,但Chrome給了我許可錯誤,看起來像這樣:

XMLHttpRequest cannot load <remote>. Origin <local> is not allowed by Access-Control-Allow-Origin.

網絡檢查員顯示請求但沒有響應(並且不包括OPTIONS預檢請求和響應)。 我使用curl檢查了請求輸出並重現了所有頭文件,我看到的內容符合規范的含義(同樣,Firefox接受的內容)。 我不知道如何進一步調試 - 是否存在將網絡活動視為低於Chrome通常提供的水平的技巧? 有關Chrome如何以不同於Firefox解釋CORS請求的信息?

我懷疑你所看到的是一個預檢,然后由於一個錯誤導致Chrome請求失敗。 這可以解釋為什么在Firefox中有效但在Chrome中無效。

您是否在請求中發送任何自定義標頭? WebKit中存在一個錯誤,其中帶有自定義標頭的GET請求失敗(此處有錯誤: http//code.google.com/p/chromium/issues/detail?id = 57836 )。 我還注意到Chrome有時會在Access-Control-Allow-Headers列表中看到Content-Type標頭,即使Content-Type是一個簡單的標頭。

另外,您提到網絡檢查員不包括OPTIONS預檢? 你在使用哪個網絡檢查員? 我建議使用Wireshark,因為這會為您提供Chrome檢查員未提供的實際網絡流量的詳細信息(例如,Wireshark將記錄預檢請求)。

其他一些調試技巧:

在Safari中嘗試請求。 這將有助於將其縮小到Chrome錯誤或WebKit錯誤。

我看到你看到的錯誤的時間(Wireshark顯示請求但不是響應),這是因為我的服務器不包含Access-Control-Allow-Origin標頭,因為Chrome不是,所以不包括發送Origin標頭(見上面的錯誤)。 在網絡跟蹤中,您是否在請求中看到了Origin標頭? 您是否可以控制服務器,如果是,它是否接收到Origin標頭?

如果沒有更多細節,很難調試實際問題。 如果您仍然遇到問題,可以在此處發布請求/響應標頭嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM