2016-03-13 82 views
0

Zemanta Chrome Extension失敗,出現以下錯誤信息加載content_security_policy未生效的Chrome擴展

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'" 

爲什麼它在上面的錯誤消息中沒有列出CSP指令中列出的"https://*.zemanta.com",我如何確保它在CSP中?

回答

1

它看起來像一個網頁與自己的CSP拋出的錯誤,而不是你的擴展。所以你在那裏設置的CSP沒有效果。

這可能是由於內容腳本嘗試將<script src="...">插入到頁面中的結果。這受制於頁面的CSP,可能會失敗。

您可以嘗試通過加載帶XHR的腳本並插入<script>標籤代碼而不是src鏈接來嘗試bypass the page's CSP。請注意,這可能會在稍後階段失敗,因爲雖然腳本將以這種方式執行,但它將受到CSP自己的操作(因此,如果它也試圖添加<script>標記,則它將失敗) 。

或者,您可以使用webRequest API截取和修改CSP頭。這是很危險的,因爲你通常會放鬆頁面的安全性。