哪里出错了?
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 规范一致,该规范将文件的源行为留给实现,但建议在有疑问时将文件源视为不透明。