【发布时间】:2021-06-10 08:51:40
【问题描述】:
我有一个使用 SSR 的 Vue 应用程序。为了实现 Content-Security-Policy,我使用了nonce-aware version of GTM snippet。
但它并没有将nonce 添加到 gtm 注入页面的所有脚本(特别是自定义 HTML 标记)。我按照提到的解决方案here 解决了 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 或哈希的情况下解决此问题,因为似乎即使在 Google 文档中也没有解决此问题的标准方法?
【问题讨论】:
-
@granty 感谢您的回复。在创建这个问题之前,我已经看到了这个问题。我按照那里提供的步骤并勾选了 Support document.write 复选框,并确认我在每个自定义 HTML 项目中看到了
nonceattr。但问题是它只能在 Safari 上运行,而不能在 Chrome、Firefox 和 Edge 上运行。我使用的是 Mac Catalina 10.15.1,所有浏览器都是最新版本。还有其他可以解决此问题的想法吗? -
我只能在 Safari 上看到我放在 GTM 脚本标签中的日志。不在其他人身上。我清除了浏览器缓存,在隐身模式下对其进行了测试,但它们都不起作用。
标签: google-chrome google-analytics google-tag-manager content-security-policy vue-ssr