[英]Chrome Extensions Content-Security-Policy
我在擴展中需要動態加載代碼。 我寫這個加載它 -
var se = document.createElement('script');
se.setAttribute('type', 'text/javascript');
se.appendChild(document.createTextNode(code));
document.getElementsByTagName('head').item(0).appendChild(se);
這是我在manifest.js中的安全策略 -
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
這會拋出一個javascript錯誤 -
"Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe eval'"
我的問題是 - 為什么不放松? 我明確地在清單中添加了一行以允許不安全的逃避。
我不認為你使用eval
會導致錯誤。 通過將<script>
塊注入文檔的head
,您似乎違反了執行內聯JavaScript的策略。
根據內容安全政策的文檔:
內聯JavaScript將不會被執行。 此限制禁止內聯塊和內聯事件處理程序(例如<button onclick ='...'>)。
另請注意:
內聯腳本
沒有放松對執行內聯JavaScript的限制的機制。 特別是,設置包含“unsafe-inline”的腳本策略將不起作用。
您不必將代碼置於內聯中,而是必須采用一種方法,利用外部js
文件來完成您嘗試的任何操作。
只需將此添加到您的manifest.json,為我工作。
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.