我有一个使用 SSR 的 Vue 应用程序。为了实现 Content-Security-Policy,我使用了 GTM 片段的 nonce-aware 版本。
但它并没有将nonce
gtm 注入到页面的所有脚本(特别是自定义 HTML 标记)中添加。我按照这里提到的解决方案解决了 Safari 上的问题。但它在Chrome、Firefox或Edge上不起作用,我仍然看到这些标签的错误:
这是我的 CSP 设置:
default-src 'self';
base-uri 'self';
block-all-mixed-content;
font-src 'self' https: https://fonts.gstatic.com data:;
img-src 'self' https: data: https://www.google-analytics.com https://ssl.gstatic.com https://www.gstatic.com https://www.googletagmanager.com;
object-src 'none';
script-src 'self' 'nonce-b62382357618aee340fc9dc596c94a19' https://www.google-analytics.com/ https://ssl.google-analytics.com https://tagmanager.google.com https://www.googletagmanager.com 127.0.0.1:*;
script-src-attr 'none';
style-src 'self' 'unsafe-inline' https://tagmanager.google.com https://fonts.googleapis.com;
upgrade-insecure-requests;
connect-src 'self' https://www.google-analytics.com https://stats.g.doubleclick.net;
经过数小时的研究,我发现了以下评论:
Chrome 屏蔽了 nonce 属性值,因此标签管理器无法获取它并将其存储为变量。
我不确定这是否真的是问题,但任何人都可以解释我如何在不使用unsafe-inline
或哈希的情况下解决这个问题,因为即使在谷歌文档上似乎也没有标准的方法来修复它?