提问者:小点点

CORS错误在Safari中,而不是在Chrome中


我正在构建一个文件上传器,在前端使用Vue Dropzone,在后端使用自定义PHP。

我的前端脚本正在发送一个带有以下头的请求:

请求头
POST/JOBIMPORT HTTP/1.1
主机:MYURL
连接:Keep-alive
内容-长度:765309
来源:http://localhost:8080
用户-代理:Mozilla/5.0(Macintosh;Intel Mac OS X 10_133)AppleWebKit/537.36(KHTML,像Gecko一样)Chrome/65.0.3325.162 Safari/537.36
内容-类型:Multipart/Form-Data;boundary=---
WebKitFormBoundaryHAAOTZ2J5IIPI3M
Accept:Application/JSON
Cache-Control:no-cache
X-requested-with:XMLHttpRequest
referer:http://localhost:8080/import
Accept-Encoding:gzip,deflate,br
Accept-Language:en-US,en;q=0.9,nl;q=0.8,de;q=0.7,fr;q=0.6

在后端的.htaccess文件中,我添加了以下几行:

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "*"

当使用Chrome时,文件上传没有问题。
当查看请求头时,我甚至会看到以下内容:

响应标头
(...)
Access-Control-Allow-标头:*
Access-Control-Allow-Origin:*
(...)

但是,当使用Safari时,上传失败,我得到以下错误:

加载资源失败:Access-Control-Allow-Headers不允许请求标头字段Cache-Control。
XMLHttpRequest无法加载https://MyURL。Access-Control-Allow-Headers不允许请求标头字段Cache-Control。

我不明白这在Chrome里是怎么工作的,但在Safari里不行。


共1个答案

匿名用户

@SideShowBarker和@RoryHewitt的评论是正确的,
Safari确实不支持access-control-allow-headers的通配符*
我显式列出了所有头,而不是使用通配符,现在它工作得很好。