原因: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 规范,该规范将文件来源的行为留给实现,但建议在有疑问的情况下将文件来源视为不透明。

另请参阅