在Safari 10.1
上尝试CORS request
时,在包含查询参数(例如https://example.com/api?v=1)的 URL 上,Safari 说
由于访问控制检查,无法加载 XMLHttpRequest
Chrome / Firefox 工作正常。
在没有?v=1
的页面请求时,Safari 也可以正常工作。
我试图改变服务器响应头从
Access-Control-Allow-Origin: https://example.com
到
Access-Control-Allow-Origin: https://example.com/api?v=1
但这打破了铬。
有什么建议吗?

你遇到了 CORS 问题。
一些可能的原因:
头Access-Control-Allow-Origin
只能在服务器端设置,而不是在您的客户端脚本。
您确定协议(http
vshttps
vs 甚至file
)完全相同吗?
如果您可能有多个子域,则需要使用"^http(s)?://(.+\.)?test\.com$
之类的内容设置配置(例如 Apache)。^
标记行的开头,以防止此 URL 之前的任何内容。您需要一个协议并在此处允许两者。子域是可选的。$
标记行的结尾(您不需要设置基于主机的子页面)。
如上所述,here将Access-Control-Allow-Headers: Origin
添加到服务器配置中也可能是一种解决方案。尝试将我的 Safari 浏览器的实际请求与 Firefox 或 Chrome 浏览器的成功请求进行比较,以发现可能丢失的 Headers(也可以将它们与您的服务器配置进行比较)。

如果有人遇到这个错误,它只是发生在我正在构建的应用程序中。在我的情况下,它原来是一个尾随 / 在 uri 中,这导致了 301 响应,由于某种原因被 Safari 解释为 500 响应。
尝试跟踪可能会起作用-
Access-Control-Allow-Origin: <origin> | *

问题是因为有必要在 cors 的数据中更加具体,这在其他解释它的操作系统中不会发生
这一个为我工作了一个在 PHP
header ("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method");
header ("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
header ("Allow: GET, POST, OPTIONS, PUT, DELETE");
$ method = $ _SERVER ['REQUEST_METHOD'];
if ($ method == "OPTIONS") {
die ();
}
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(12条)