本地托管字体违反 CSP 规则

Locally hosted fonts breaking CSP rule

我正在 Nginx 中设置 Content-Security-Policy headers,但我无法让本地托管的 Typekit 字体正常工作。

我正在使用以下脚本在本地托管 Typekit 字体,结果非常好,加载时间短且没有 FOUT:https://github.com/morris/typekit-cache

但现在的问题是设置 CSP 以传递这些字体。我尝试了 localStorage 但它没有用。

这些是我遇到的错误:

[Report Only] Refused to load the font 'data:font/opentype;base64,d09GMgABAAAAAFb0ABQAAAAAskgAAFaDAAIAAAAAAAAAAAAAA…bJbjfY7U6T320POPp5HLprLxRlPwIJqShhBB1pRCUKkQmIKRpGoiON1kre7lGR0Z4h5ENMAQAA' because it violates the following Content Security Policy directive: "font-src 'self'

[Report Only] Refused to load the font 'data:application/font-woff;base64,d09GRgABAAAAABwUAA4AAAAAKHQAAQAAAAAAAAAAA…NfJJTVolXlnco7lXdLiWW32CnmmMrFlnJ5aXLN8srxynGxmBgfv9d+AQ8KdggAAAABVwJMPAAA' because it violates the following Content Security Policy directive: "font-src 'self'

(我删除了为 font-src 策略列出的域)。

谢谢

加载字体时,您可以看到它创建的字体源为 data。这是字体的 base64 编码版本,而不是指向字体本身的链接。

所以只需将 font-src 'self'; 更改为 font-src 'self' data: ;,它应该可以正常工作。