最近我在Safari(OSX和iOS)上遇到了CORS(跨源资源共享)请求的问题,而同样的请求在Chrome和Firefox上完美运行.我按照W3C的文档处理并在服务器端处理预检请求,我的回答如下:
HTTP/1.0 200 OK
Access-Control-Allow-Origin: http://192.168.1.96:4399
Access-Control-Allow-Methods: POST
Access-Control-Allow-Methods: GET
Access-Control-Allow-Methods: OPTIONS
Access-Control-Allow-Headers: Origin
Access-Control-Allow-Headers: Authorization
Access-Control-Allow-Headers: X-Requested-With
Access-Control-Allow-Headers: Accept
Access-Control-Allow-Headers: Access-Control-Request-Method
Access-Control-Allow-Headers: Access-Control-Request-Headers
Access-Control-Allow-Headers: DNT
Access-Control-Allow-Headers: X-CustomHeader
Access-Control-Allow-Headers: Content-Type
Access-Control-Max-Age: 0
Date: Fri, 25 Nov 2016 08:45:25 GMT
Origin: http://192.168.1.96:4399
Access-Control-Expose-Headers: Origin
Content-Encoding: gzip
Transfer-Encoding: chunked
Run Code Online (Sandbox Code Playgroud)
此类响应在Chrome,Firefox和Android浏览器上运行良好:在预检请求后立即发送POST请求.但是在Safari上,在服务器响应了反射请求后,我从控制台收到了这样的错误消息:
Failed to load resource: The network connection was lost.
Run Code Online (Sandbox Code Playgroud)
我检查了服务器的预检响应,但发现它和上面一样......经过多次搜索和尝试后,我仍然无法使其工作:-(
是否有人之前遇到过这个问题?有谁能想到我犯了什么错误?
非常感谢!
小智 3
这都是关于 Safari 添加origin到 OPTIONS 请求标头的Access-Control-Request-Headers。
因此,要修复它,您应该在响应中启用此标头Access-Control-Allow-Headers。
PS:请参阅类似问题CORS 请求在 Safari 中不起作用
| 归档时间: |
|
| 查看次数: |
14579 次 |
| 最近记录: |