2014-10-01 56 views
5

這個問題已經在stackoverflow中提及了十幾次,但我有一個不同的問題。Chrome說沒有'Access-Control-Allow-Origin'標題,但標題有

Chrome首先進行「OPTIONS」調用來獲取標題。正如你所看到的,正確的標題在那裏。

enter image description here

出於某種原因,Chrome並沒有注意到這個標題和以同樣的方式取消實際的請求,它會如果標題是不存在的。

enter image description here

的頁面實際上使三個電話和奇怪的是,他們中的一個作品。

enter image description here

所以現在的問題是,當標題確實是存在的,爲什麼Chrome的不尊重呢?我能做些什麼來調試它?

更新

我嘗試添加Access-Control-Allow-Methods所以現在從選項報頭響應呼叫包括這些響應頭:

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

經過調查

我翻看原始請求和響應,發現令人驚訝的事情:錯誤是來自appl的簡單HTTP 500錯誤ication。可能是因爲HTTP 500錯誤沒有包含正確的標題,Chrome不顯示返回的錯誤,而是顯示與標題相關的錯誤。

回答

所以在最後,如果鍍鉻給人說No 'Access-Control-Allow-Origin' header它實際上可能掩蓋一個HTTP 500錯誤。這可以通過在提琴手中檢查請求和響應來確定。

+0

而代碼...哪裏是代碼? – Hackerman 2014-10-01 18:32:09

+1

還應該有一個'Access-Control-Allow-Methods'標頭。我沒有看到它的截圖。 – monsur 2014-10-01 18:50:42

+0

@RobertRozas謝謝。這個問題是關於爲什麼Chrome的行爲,所以我試圖不包括將重點從我試圖瞭解的問題的焦點。但是如果需要,我可以發佈原始請求/回覆? – 2014-10-01 19:12:54

回答

2

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

+0

這個。這是指定的地方,瀏覽器可以做任何事情在500? – enpenax 2015-12-18 06:54:11