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

IT技术 javascript browser-extension content-security-policy browser-security
2021-03-08 14:20:46

我试图以这种方式使用控制台在现有网站上包含 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);

然后我得到了这个错误:

Content Security Policy: The page's settings blocked the loading of a resource at http://code.jquery.com/jquery-1.11.1.min.js ..

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

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

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

2个回答

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

作为替代方案,应该可以在Content-Security-Policy响应头到达您的浏览器之前对其进行更改(通过 HTTP 代理)。也可以通过扩展来做到这一点。

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

@pramttl 不,扩展 CSP 仅适用于扩展页面,不适用于网页;我认为它甚至不适用于注入网页的内容脚本。
2021-05-03 14:20:46
@KeithHanson 您是说扩展程序所做的修改不受页面 CSP 的约束?另外,您是说 Chrome 扩展程序现在可以在加载时间后修改页面上生效的 CSP?(我已经很长时间没有使用 Chrome 扩展开发了。)
2021-05-03 14:20:46
我知道这非常古老,但我在尝试将 Artoo.js 注入页面时遇到了它。chrome 扩展确实允许您修改您正在查看的页面并让任何内容通过。
2021-05-12 14:20:46
@pramttl 在内部为扩展设置 CSP;它不是一种扩展程序来改变普通网页的 CSP 的机制。
2021-05-14 14:20:46
在 chrome 扩展中找到了一种方法。到目前为止我还没有尝试过。developer.chrome.com/extensions/contentSecurityPolicy
2021-05-16 14:20:46

我正在使用此 Chrome 扩展程序在每个选项卡的基础上禁用 CSP。

禁用内容安全策略扩展:

默认情况下,有一个 fork 会禁用 CSP。

始终禁用内容安全策略扩展:

@FlorianvonStosch 这可能仅适用于 Chrome。
2021-05-05 14:20:46