簡體   English   中英

Chrome沒有'Access-Control-Allow-Origin'標題,但標題就在那里

[英]Chrome saying No 'Access-Control-Allow-Origin' header, but the header is there

stackoverflow中已經提到了這個問題十幾次,但我有一個不同的問題。

Chrome首先進行“OPTIONS”調用以獲取標題。 如您所見,正確的標題就在那里。

在此輸入圖像描述

出於某種原因,Chrome不會注意到標頭並取消實際請求的方式與標頭根本不存在時相同。

在此輸入圖像描述

該頁實際上進行了三次調用並且好奇地,其中一個有效。

在此輸入圖像描述

所以問題是,當標題確實存在時,為什么Chrome不尊重它? 我該怎么做才能調試它?

更新

我嘗試添加Access-Control-Allow-Methods所以現在OPTIONS調用的頭響應包括這些響應頭:

Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept
Access-Control-Allow-Methods:POST, GET, OPTIONS
Access-Control-Allow-Origin:*

結果是一樣的。

在服務器端設置標頭

我在每個請求上設置服務器端的頭文件(在Global.asax.cs Application_BeginRequest中)

Response.Headers.Add("Access-Control-Allow-Origin", "*");
Response.Headers.Add("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
Response.Headers.Add("Access-Control-Allow-Methods", "POST, GET, OPTIONS");

在與Fiddler調查之后

我查看了原始請求和響應,發現了一些令人驚訝的錯誤:錯誤是來自應用程序的簡單HTTP 500錯誤。 可能因為HTTP 500錯誤不包含正確的標頭,Chrome不會顯示返回的錯誤,而是顯示與標頭相關的錯誤。

回答

總而言之,如果Chrome提供了“ No 'Access-Control-Allow-Origin' header它實際上可能會掩蓋HTTP 500錯誤。 這可以通過檢查Fiddler中的請求和響應來確定。

如果Chrome說No 'Access-Control-Allow-Origin' header它實際上可能會掩蓋HTTP 500錯誤。 這可以通過檢查Fiddler中的請求和響應來確定。

暫無
暫無

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

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