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