Safari:“由于访问控制检查,Fetch API 无法加载 <url>。” 根据同源请求

Sop*_*ert 2 safari webkit fetch-api

fetch()在我的 Web 应用程序和 Safari 中调用,获取 Promise 被拒绝,并且我在 Web Inspector 控制台中看到如下错误:

Fetch API cannot load https://example.com/whatever due to access control checks.
Run Code Online (Sandbox Code Playgroud)

这听起来像是 CORS 错误,但我正在发出同源请求(并且不涉及任何广告拦截器或任何内容)。发生此错误的其他原因还有哪些?

Sop*_*ert 10

尽管记录的控制台消息中包含“由于访问控制检查”一词,但这并不总是与访问控制相关。

在WebKit源代码中,任何同步失败的网络请求都被假定为访问控制错误

我遇到了这个问题(在 WebKit 的本地调试版本上耐心地使用 lldb)发现,在我的情况下,提取被立即取消,因为启动它的页面上有一个挂起的导航;它已经在卸货的过程中。在 Safari 中,这似乎会阻止从该页面启动任何新请求,并且它们会记录此“访问控制”错误。