我目前正在开发一个网站,但无法在 Firefox 中显示我的字体图标。除了 firefox 之外的每个浏览器都可以加载并显示我的字体图标,但是在 firefox 上我收到以下错误:
跨源请求被阻止:同源策略不允许读取位于 file:///C:/Users/Me/Desktop/website/resources/dist/css/fonts/themify.ttf 的远程资源。 (原因:CORS请求不是http)。
文件的路径是正确的,因为浏览器让我在输入上面列出的 URL 时下载文件。有人知道我为什么会收到此错误吗?
最佳答案
Firefox 68 包含一个安全补丁,它限制了当您从 file://URL 打开页面时页面可以加载的文件类型(以及加载方法)。进行此更改是为了防止在本地页面范围内泄露有值(value)的数据,如可用漏洞利用所示。更多信息:https://developer.mozilla.org/docs/Web/HTTP/CORS/Errors/CORSRequestNotHttp
我昨天提交了一个错误,建议允许使用字体,但实现起来需要时间。现在,您可以按如下方式回滚补丁:
- 在新选项卡中,在地址栏中键入或粘贴 about:config,然后按 Enter/Return。单击 promise 小心或接受风险的按钮。
- 在列表上方的搜索框中,键入或粘贴 uniq
- 双击 privacy.file_unique_origin 首选项将值从 true 切换为 false
- Firefox > 106 security.fileuri.strict_origin_policy 设置false
缓解漏洞:如果您将来自不受信任站点的页面保存在单独的文件夹中,例如 Downloads\Untrusted,那么攻击者将很难使用本地文件链接找到任何有值(value)的内容。
关于html - 加载本地文件时阻止跨源请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51081754/