原因:CORS 请求不是 HTTP

原因

Reason: CORS request not HTTP

哪里出错了?

CORS 请求只能使用 HTTP 或 HTTPS URL 方案,但请求指定的 URL 是另一种类型。如果 URL 指定了本地文件(使用 file:/// 方案),则经常会发生这种情况。

要解决此问题,请确保在发出涉及 CORS 的请求时使用 HTTPS URL,例如 fetch()XMLHttpRequest、Web 字体 (@font-face) 和 WebGL 纹理以及 XSL 样式表。

加载本地文件

过去,来自同一目录和子目录的本地文件被视为来自同源。这意味着在测试期间,文件及其所有资源都可以从本地目录或子目录加载,而不会触发 CORS 错误。

不幸的是,这存在安全隐患,如本公告所述:CVE-2019-11730。包括 Firefox 和 Chrome 在内的许多浏览器现在都将所有本地文件(默认情况下)视为具有不透明源。因此,加载包含本地资源的本地文件现在将导致 CORS 错误。

需要执行本地测试的开发人员现在应该设置本地服务器。由于所有文件都来自相同的方案和域 (localhost),因此它们都具有相同的源,并且不会触发跨源错误。

注意:此更改与 URL 规范一致,该规范将文件的源行为留给实现,但建议在有疑问时将文件源视为不透明。

另见