Zemanta Chrome Extension无法加载,并显示以下错误消息
loader.js:13 Refused to load the script 'https://static.zemanta.com/widgets/blogger.com/merged-blogger.js?v=1451290656'
because it violates the following Content Security Policy directive:
"script-src 'self' *.google.com *.google-analytics.com 'unsafe-inline'
'unsafe-eval' *.gstatic.com *.googlesyndication.com *.blogger.com
*.googleapis.com uds.googleusercontent.com https://s.ytimg.com
www-onepick-opensocial.googleusercontent.com www-bloggervideo-opensocial.googleusercontent.com
www-blogger-opensocial.googleusercontent.com *.blogspot.com https://www.blogblog.com".
我已将content_securiy_policy
行更改为以下内容,然后重新加载扩展程序
"content_security_policy": "script-src 'self' https://ssl.google-analytics.com https://*.zemanta.com; object-src 'self'"
为什么"https://*.zemanta.com"
未在上面的错误消息中的CSP指令中列出,以及如何确保它在CSP中?
答案 0 :(得分:1)
它看起来像是一个网页引发的错误,它有自己的CSP,而不是你的扩展程序。所以你设置的CSP没有效果。
这可能是由于内容脚本试图将<script src="...">
插入页面而导致的。这取决于页面的CSP,可能会失败。
您可以尝试使用XHR加载脚本并插入包含代码而不是<script>
链接的src
标记来bypass the page's CSP。请注意,这可能会在稍后阶段失败,因为虽然脚本将以这种方式执行,但它将在自己的操作中受CSP约束(因此,如果它也尝试添加<script>
标记,它会失败)。
或者,您可以使用webRequest
API拦截和修改CSP标头。这是有风险的,因为你通常会放松页面的安全性。