Compass SASS字体加载报错:downloadable font被sanitizer拒绝
解决Compass自动生成字体URL时间戳导致的字体加载错误
我之前碰到过一模一样的问题——Compass默认给资源URL加的缓存时间戳,刚好触发了浏览器的字体安全过滤器,就出现了你看到的rejected by sanitizer报错。下面是几个亲测有效的解决办法:
方法1:彻底关闭Compass的缓存戳功能
直接在你的config.rb里添加一行配置,完全禁用自动加时间戳的行为:
# 关闭资源URL的缓存戳后缀 asset_cache_buster :none
保存后重新编译Sass(比如执行compass compile),生成的CSS里字体URL就不会再带?1400417483这类参数了。
方法2:仅针对字体文件禁用缓存戳
如果你不想影响图片、JS等其他资源的缓存策略,可以自定义规则,只跳过字体文件:
asset_cache_buster do |path, real_path| # 只有非字体文件才添加缓存戳 unless File.extname(path) =~ /\.(woff|woff2|ttf|eot|svg)$/i File.mtime(real_path).strftime("%s") end end
验证修改效果
重新编译后,你的app.css里的@font-face应该变成这样:
@font-face { font-family: "circular-book"; src: url('../fonts/lineto-circular-book.woff') format('woff'), url('../fonts/lineto-circular-book.woff2') format('woff2'); }
刷新页面后,字体加载的报错应该就消失了。
额外排查小提示
如果还是有问题,可以再检查这几点:
- 字体文件权限:确保本地开发服务器能正常读取
/static/fonts/下的文件 - 路径正确性:确认CSS里的
../fonts/相对路径确实指向字体文件所在位置 - 跨域设置:如果是部署到线上跨域加载字体,需要服务器配置CORS响应头(本地开发一般不用管)
内容的提问来源于stack exchange,提问作者user8520549
相关产品推荐
相关产品推荐

