2016-10-31 87 views
5

野生動物園(10 - OSX埃爾卡皮坦)與CORS

問題

我做從AngularJS前端Laravel後端一個CORS POST請求。CORS OPTIONS請求成功,但掛在Safari

  • 在Chrome和Firefox,這兩個選項和POST請求返回HTTP狀態200 OK
  • 在Safari中10(OSX),這兩個選項和POST請求返回HTTP狀態200 OK,但OPTIONS請求不斷加載( HTTP狀態200 OK!)

請求頭

Accept:*/* 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4 
Access-Control-Request-Headers:content-type 
Access-Control-Request-Method:POST 
Cache-Control:no-cache 
Connection:keep-alive 
Host:x.local 
Origin:http://y.local 
Pragma:no-cache 
Referer:http://y.local/ 

響應頭

Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept 
Access-Control-Allow-Methods:POST, GET, OPTIONS, PUT 
Access-Control-Allow-Origin:* 
Cache-Control:no-cache 
Connection:keep-alive 
Content-Length:16 
Content-Type:application/json 
Date:Mon, 31 Oct 2016 09:22:51 GMT 
Server:nginx/1.11.1 

在得到http狀態200 OK(OPTIONS請求)後,Safari掛起。我該怎麼辦?

+2

聽起來類似於http://stackoverflow.com/questions/38789251/xhr-request-hangs-in-safari-on-el-capitan(無答案) –

+2

這也看起來類似https://groups.google。 com/forum /#!topic/angular/3hP4JpTHLYY –

+0

@GünterZöchbauer謝謝,但它對我來說都不適用於HTTP和HTTPS。 – schellingerht

回答

1

嘗試返回204無內容,爲我工作。在一些例子中沒有進一步的解釋。

1

確保您已將Accept標題添加到您的CORS AllowedHeaders選項。這爲我解決了它。

您的請求的Accept標頭爲/,但您的CORS選項根本無法處理。 Chrome等現代瀏覽器可以在沒有標題的情況下工作,但Safari並沒有保持最新狀態。