如何在浏览器JS控制台中包含脚本时覆盖内容安全策略?

Pra*_*tal 47 javascript browser-security browser-extension content-security-policy

我试图通过这种方式使用控制台在现有网站上包含JQuery:

var script = document.createElement('script');
script.src = 'http://code.jquery.com/jquery-1.11.1.min.js';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);
Run Code Online (Sandbox Code Playgroud)

然后我收到了这个错误:

Content Security Policy: The page's settings blocked the loading of a resource at http://code.jquery.com/jquery-1.11.1.min.js ..
Run Code Online (Sandbox Code Playgroud)

在开发过程中,我可能想要包含外部Javascript.我可能不想复制粘贴整个JQuery代码,因为它看起来不整洁.如何为开发目的覆盖内容安全策略?

这对快速测试非常有用.我可能想稍后将我正在编写的脚本转换为浏览器扩展.

注意(更新):我在现有网站上编写脚本,无法控制设置Content-Security-Policy标头.

aps*_*ers 51

您可以通过security.csp.enableabout:config菜单中禁用来关闭Firefox中整个浏览器的CSP .如果这样做,您应该使用完全独立的浏览器进行测试.例如,将Firefox Developer Edition与普通浏览器一起安装并使用它进行测试(而不是正常的Web使用).

作为替代方案,应该可以在Content-Security-Policy响应标头到达浏览器之前(通过HTTP代理)更改响应标头.也可以通过扩展来完成此操作.

Chrome扩展程序可以为自己的chrome-extension://...网页设置自己的CSP,但不能更改普通网页的CSP.

  • 更新:此首选项在 Firefox 99 中已从 Firefox 和 Firefox Developer 中删除。请参阅支持问题:https://support.mozilla.org/zu/questions/1374424 和原始开发者论坛 convo,讨论潜在的更改:https://bugzilla.mozilla.org/page.cgi?id=etiquette.html。 (10认同)
  • @pramttl 在内部为扩展设置 CSP;它不是一种扩展程序来改变普通网页的 CSP 的机制。 (2认同)
  • 我知道这是非常古老的,但我在尝试将 Artoo.js 注入页面时遇到了它。Chrome 扩展确实允许您修改正在查看的页面并允许任何内容通过。 (2认同)