谷歌Analytics(分析)嵌入由于内容安全策略错误
我复制了确切谷歌的示例代码从https://developers.google.com/analytics/devguides/reporting/embed/v1/getting-started谷歌Analytics(分析)嵌入由于内容安全策略错误
什么我的浏览器说,嵌入谷歌分析API的API不加载是:
内容安全策略:轻“ '不安全列直插式'”脚本SRC内: 的严格动态“指定(未知)
内容安全策略: 忽略“https:”开头的脚本-SRC内:“严格-dynami C”指定 (未知)
内容安全策略:忽略‘HTTP:’脚本SRC内: 的严格动态“指定(未知)
我已经试过这两个在我的HTTP本地主机和Web服务器上的https域,结果相同。
步骤2下面的实际代码不需要复制问题,只将其脚本添加到文档中已经导致出现该错误。所以这个错误并没有以任何方式与特定的Google帐户或API密钥相关联。
像这样:
<!DOCTYPE html>
<html>
<head>
<title>Embed API Demo</title>
</head>
<body>
<!-- Step 1: Create the containing elements. -->
<section id="auth-button"></section>
<section id="view-selector"></section>
<section id="timeline"></section>
<!-- Step 2: Load the library. -->
<script>
(function(w,d,s,g,js,fjs){
g=w.gapi||(w.gapi={});g.analytics={q:[],ready:function(cb){this.q.push(cb)}};
js=d.createElement(s);fjs=d.getElementsByTagName(s)[0];
js.src='https://apis.google.com/js/platform.js';
fjs.parentNode.insertBefore(js,fjs);js.onload=function(){g.load('analytics')};
}(window,document,'script'));
</script>
</body>
</html>
它并不页面或将这段代码已被弃用,或旧或不再有效的文档上的任何地方说。但脚本文件只是被拒绝了,我不知道该从哪里去。
这不是代码的问题,这似乎与您的服务器的配置有关。
内容安全策略旨在防止(除其他之外)XSS攻击,并通过阻止来自未知源的脚本执行或动态插入来实现这一点。由于嵌入API依赖于内嵌脚本,远程代码注入以及恶意软件也使用的其他技术,因此CSP将阻止它。
服务器将CSP设置为一个http头,因此您需要与为您管理服务器的人通话。他或她很可能不会简单地删除安全功能,这意味着您不能使用嵌入式API。
有没有办法(我知道)使内联脚本和代码注入安全。更改CSP以允许内联脚本将简单地删除它可能提供的所有保护。
如果您的内容安全策略包含'strict-dynamic',那么您的服务器可能还会创建一个随机的,响应的nonce
值,并将其放入Content-Security-Policy
响应标头中。
要使分析脚本块运行,必须插入与<script>
元素的属性相同的值,例如,
<script nonce="{{ csp_nonce }}">
(function(w,d,s,g,js,fjs){ ... }(window,document,'script'));
</script>
(其中csp_nonce
必须由随机值通过模板系统取代;变量和内插语法的名字取决于你的服务器端配置。)
或者,要允许静态<script>
块运行,可以使用CSP2 hash。您可以通过将其内容复制到https://report-uri.com/home/hash中找到脚本的SHA256散列,并将此值添加到CSP标头中的script-src
。