javascript - Safari 10.1 : XMLHttpRequest with query parameters cannot load due to access control checks

标签 javascript safari cors

Safari 10.1 上尝试在包含查询参数(例如 https://example.com/api?v=1 )的 URL 上发出 CORS 请求时,Safari 会显示

XMLHttpRequest cannot load due to access control checks

Chrome/Firefox 工作正常。

对于来自没有 ?v=1 的页面的请求,Safari 也可以正常工作。

我尝试更改服务器响应 header

Access-Control-Allow-Origin: https://example.com

Access-Control-Allow-Origin: https://example.com/api?v=1

但这会破坏 Chrome。

有什么建议吗?

最佳答案

您遇到了 CORS 问题。

一些可能的原因:

  • header Access-Control-Allow-Origin 只能在服务器端设置,不能在客户端脚本中设置。 (您没有明确表示您这样做是正确的。)
  • 您确定协议(protocol)(httphttps 甚至 file)完全相同吗?
  • 如果您可能有多个子域,则需要使用诸如 "^http(s)?://(.+\.)?test\.com$ 之类的内容设置您的配置(例如 Apache) .
    ^ 标记行的开头,以防止此 url 前面出现任何内容。您需要一个协议(protocol)并允许两者都在这里。子域是可选的。 $ 标记行尾(您不需要设置子页面,因为 origin 仅基于主机)。
  • 如上所述hereAccess-Control-Allow-Headers: Origin 添加到服务器配置中也可能是一个解决方案。尝试将我的 Safari 发出的实际请求与 Firefox 或 Chrome 完成的成功请求进行比较,以发现可能丢失的 header (也可以将它们与您的服务器配置进行比较)。

关于javascript - Safari 10.1 : XMLHttpRequest with query parameters cannot load due to access control checks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43517254/

相关文章:

node.js - 即使使用 withCredential : true,axios 也无法随请求发送 cookie

javascript - 如何在 javascript 中编写参数化 SQL 查询?

javascript - jquery slider 自动播放

javascript - 无法在 iOS Safari 上更改按钮选择

html - 是否有文本输入最大长度在 Safari 中不起作用的解决方法?

javascript - 如何从本地主机发送跨源请求?

javascript - 将 HTTP Basic Auth 添加到 Webpack Dev Server

javascript - React-Redux 购物车 - 减少/增加商品数量

jquery - 无法仅在 Safari 中解决此奇怪的悬停错误

angularjs - AugularJS 中的飞行前 OPTIONS 请求未传递授权 header