css 加载本地文件时阻止跨域请求

ev7lccsx  于 2023-05-23  发布在  其他
关注(0)|答案(3)|浏览(155)

我目前正在开发一个网站,在firefox中显示我的字体图标时遇到了麻烦。除了firefox以外的所有浏览器都可以加载并显示我的字体图标,但在firefox上我得到以下错误:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at file:///C:/Users/Me/Desktop/website/resources/dist/css/fonts/themify.ttf. (Reason: CORS request not http).
文件的路径是正确的,因为当我输入上面列出的URL时,浏览器会让我下载文件。有谁知道我为什么会犯这个错误吗?

xn1cxnb4

xn1cxnb41#

Firefox 68包含一个安全补丁,当您从file://URL打开页面时,该补丁限制页面可以加载的文件类型(以及加载方法)。此更改是为了防止在本地页面范围内泄漏有价值的数据,如可用的漏洞所示。更多信息:https://developer.mozilla.org/docs/Web/HTTP/CORS/Errors/CORSRequestNotHttp
我昨天提交了一个bug,建议允许使用字体,但这需要时间来实现。现在,您可以按如下方式回滚补丁:
1.在新选项卡中,在地址栏中键入或粘贴about:config,然后按Enter/Return键。点击按钮,承诺小心或接受风险。
1.在列表上方的搜索框中,键入或粘贴uniq
1.双击privacy.file_unique_origin首选项,将值从true切换为false
注意事项:
对于Firefox版本106或更高版本*省略STEP 3***
并将security.fileuri.strict_origin_policy设置为
“false”**
要缓解漏洞,请执行以下操作:如果您将来自不受信任站点的页面保存在单独的文件夹中,例如Downloads\Untrusted,则攻击者将难以使用本地文件链接找到任何有价值的内容。

mqkwyuun

mqkwyuun2#

正如在评论部分提到的,我安装了一个Web服务器。在我的例子中,我使用了tomcat8,使用它我甚至可以在firefox中显示图标。

llmtgqce

llmtgqce3#

要解决本地预览时未加载Web字体的临时问题(应该在下一个68.0.2 Firefox更新中修复),最简单安全的方法是安装.ttf或.otf版本,并在**@font-face声明中链接到它。在Windows上,转到/Control Panel/Fonts/并检查字体的确切名称,复制到local('')**值。
示例:

@font-face {    
   font-family: 'Clear Sans';    
   font-style: normal;    
   font-weight: 700;    
   src: local('Clear Sans Bold'),    
      url('../fonts/woff2-convert/ClearSans-Bold.woff2') format('woff2'),    
      url('../fonts/WOFF/ClearSans-Bold.woff') format('woff'),     
      url('../fonts/TTF/ClearSans-Bold.ttf') format('truetype')    
}

相关问题