按照 Google Lighthouse 的建议为我的网站获得更快的响应,我正在使用这个技巧来加载字体:
<link as="style"
href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600;700&display=swap"
onload="this.onload=null;this.rel='stylesheet'"
rel="preload">
但由于我严格的 CSP 规则,它失败了,而且我不知道如何为这个“onload”属性添加 sha384 哈希:/
我试图onload
像这样获取内容哈希:
echo "this.onload=null;this.rel='stylesheet'" | openssl dgst | openssl enc -base64 -A
输出:npWtxZLLH7z2/zORM47igyJ5eTYuOl9qxzn4A632S7yMmMKBDHhL5ZHC6eBSxc/C
然后我将它添加到 CSP SRI 列表中,然后刷新,但它失败了:
拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:“script-src 'strict-dynamic' '[...list of other SRI hashes...]' sha384-npWtxZLLH7z2/zORM47igyJ5eTYuOl9qxzn4A632S7yMmMKBDHhL5ZHC6eBSxc/C 'unsafe-内联'http:https:“。请注意,如果源列表中存在散列值或随机数值,则忽略“不安全内联”。
如何在不授权所有内联脚本的情况下允许这个内联“onload”小脚本?为什么我的 SRI 在添加时不起作用?:(
谢谢 !