2016-10-31 44 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并没有保持最新状态。