跨站点 XMLHttpRequest 内容安全策略指令解决方法
Cross site XMLHttpRequest Content Security Policy directive workaround?
我正在使用一个用户脚本,每当网站上的某些内容根据我的定义发生变化时,它都会播放声音并向我发送一些通知。
最近,修复了不相关的XSS漏洞的服务器端更改也阻止了这两件事,因为正在发出跨站点请求:
拒绝连接到"http://myhomepage.com/mysound.mp3",因为它违反了以下内容安全策略指令:"connect-src 'self' https://websitetocheck.com"。
我该怎么做才能绕过新的服务器端限制来找回我的小声音和通知器?
任何想法或链接将不胜感激!
GM_xmlhttpRequest
跨域工作,您可以手动设置HTTP标头。此外,您可以将声音文件作为数据 URI 嵌入到脚本中,或使用 @resource
来要求声音文件。在脚本中具有文件内容后,将数据 URI 提供给<audio>
以进行填充。
FIREFOX 用户的解决方案:
如果你使用的是 Firefox,有一个非常有用的扩展,可以让你使用 javascript 修改 Firefox 的每个请求头和每个响应头。它可以用于很多事情,但在这里我将向您展示如何绕过"内容安全策略"。
- 此扩展的名称:">重写 HTTP 标头 (JS(">
- 安装页面: https://addons.mozilla.org/en-US/firefox/addon/moz-rewrite-js/
此扩展还有一个 (JSON( 版本,但请确保从我刚刚提供的链接中使用 (JS( 版本。
安装扩展并重新启动火狐浏览器。现在我们需要配置它。我将在这里为您提供所有步骤:
(它可能看起来又长又复杂,但实际上,它非常简单。我只是提供所有可能的详细信息,以便每个人都能够配置选项。
- 打开火狐浏览器的扩展管理器。
- 单击选项按钮
- 确保"HTTP 请求"和">HTTP 响应"都已启用。
- 还要确保两个">监视间隔"都设置为至少"1000"(它将每 1 秒查找一次对脚本文件所做的更改。完成脚本编辑后,可以将其设置回"0"以节省一些CPU(
- 对于两个脚本的位置,您可以使用指向 Firefox 配置文件目录的 {ProfD} 变量,而不是使用 find 按钮。如果您使用的是可以更改位置的便携式Firefox,则此功能特别有用。请注意,如果您将框保留为"空",则"默认情况下"它不会起作用。
- 您的两个"位置"框应如下所示:">{ProfD}''moz-rewrite''requests.js"和">{ProfD}''moz-rewrite''responses.js"> 文件夹和脚本文件
- 不会自动创建,因此您需要在">Firefox 的配置文件目录"中创建一个名为">moz-rewrite"的新文件夹,然后创建脚本文件。
- 例:
- "C:''Users''YourName''AppData''Roaming''Mozilla''Firefox''Profiles''qwertyui.default''moz-rewrite''requests.js">
- "C:''Users''YourName''AppData''Roaming''Mozilla''Firefox''Profiles''qwertyui.default''moz-rewrite''responses.js">
现在配置已经完成,您需要做的就是用记事本打开"响应.js",将下面的脚本复制并粘贴到此文件中,保存它,您应该能够绕过此"XMLHttpRequest 内容安全策略"。
// responses.js
//
[
{
"url" : new RegExp('^https?://myhomepage'.com/mysound'.mp3', 'i'),
"headers" : {
"Content-Security-Policy" : null,
"Access-Control-Allow-Origin" : "*"
}
}
]
// End of script
请注意,使用上面的脚本,您需要将 Mp3 文件的网址修改为真实文件。如果要绕过"myhomepage.com"上任何mp3文件的"内容安全策略",或者如果以前的脚本有问题,则可以改用此脚本:
// responses.js
//
[
{
"url" : new RegExp('^https?://myhomepage'.com/.*'.mp3', 'i'),
"headers" : {
"Content-Security-Policy" : null,
"Access-Control-Allow-Origin" : "*"
}
}
]
// End of script
这是此扩展的一些非常有趣的小脚本的链接。例如,有一个小的"广告拦截器"脚本,另一个脚本用于将搜索引擎查询从雅虎重定向到谷歌。链接: https://github.com/warren-bank/moz-rewrite/tree/js/data/recipe-book
如果你知道如何编写Javascript代码,你真的应该看看这个。有关更多信息或阅读有关"重写 HTTP 标头 (JS("的文档。链接: https://github.com/warren-bank/moz-rewrite
- 在指令控制器中使用$attrs时出现问题
- 参数变量出现ngTable指令问题
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 使用每次都不同的transclude重复指令
- 打开一个模态并将其链接到AngularJS中的指令
- 从html创建一个指令,该指令按类名应用函数
- 将JSON对象传递给angular指令
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- 如何解决Yii中的页面刷新问题
- 测试Angular Service解决错误回调中的promise
- DOM在指令中未就绪's链接功能.hacky Timeout是唯一的解决方案吗
- 跨站点 XMLHttpRequest 内容安全策略指令解决方法
- 如何确保在执行指令之前解决工厂承诺
- 使用$scope$destroy解决了内存泄漏,但破坏了指令
- 什么'这是等待指令中启动的承诺得到解决的最佳方式
- 如何解决嵌套指令作用域问题?
- 如何使用ng-repeat指令解决性能问题
- 解决了angular中指令包装中的圆形引用问题
- AngularJS 浏览器自动填充解决方法是使用指令
- 是否有一个解决方案,以获得对象直接到指令范围