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

时间:2018-03-15 16:31:51

标签: cors xmlhttprequest

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

我的前端脚本正在发送包含以下标题的请求:

  

请求标题
  POST / jobimport HTTP / 1.1
  主持人:myurl
  连接:保持活力
  内容长度:765309
  来源:http://localhost:8080
  用户代理:Mozilla / 5.0(Macintosh; Intel Mac OS X 10_13_3)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 65.0.3325.162 Safari / 537.36
  内容类型:multipart / form-data;边界= ----
  WebKitFormBoundaryhaaAoTz2J5iipi3M
  接受:application / json
  缓存控制:无缓存
  X-Requested-With:XMLHttpRequest
  推荐人: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-Headers:*
  Access-Control-Allow-Origin:*
  (...)

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

  

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

我不明白这在Chrome中是如何运作的,但在Safari中却不行。

2 个答案:

答案 0 :(得分:5)

@sideshowbarker和@roryhewitt的评论是正确的,
Safari确实不支持*的通配符Access-Control-Allow-Headers 我明确列出了所有标题,而不是使用通配符,现在它完美无缺。

答案 1 :(得分:1)

如果父域URL在https中,则必须也在https中调用ajax URL。如果不是,则不使用https。希望这会有所帮助