[英]No 'Access-Control-Allow-Origin' header but no access to API
[英]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.