使用webRequest来取消由另一个扩展发出的请求
Use webRequest to cancel a request made by another extension
我已经成功地使用了webRequest API来阻止来自我访问的网站的所有xmlhttprequest。然而,我的目标是绕过安装在我们学校chromebook上的内容安全过滤器。扩展的工作原理是读取标签的URL,并发送一个xmlhttprequest到它的服务器,询问网站是否被阻止。我已经确定,如果我取消所有这些xmlhttprequest到它的服务器,没有网站将被阻止。
我使用以下代码来狙击所有xmlhttprequest。
chrome.webRequest.onBeforeSendHeaders.addListener(function(details){
if(details.type=='xmlhttprequest')
{
return{cancel:true};
}
},{urls: ['<all_urls>']},['blocking', 'requestHeaders']);
此代码可以完美地阻止来自任何网站的请求(例如,您无法播放spotify音乐与此扩展启用)。但是onbeforeendheaders似乎忽略了来自扩展的请求。因此,这段代码不能阻止学校扩展发送到其服务器的xmlhttprequest。我也有代码阻止xmlhttprequests与onHeadersReceived和onBeforeRequest,但他们都有同样的问题。它们会阻止来自网站的请求,但不会识别来自扩展名的请求。
奇怪的是,有时这段代码实际上是有效的,并且会阻止来自扩展的请求,但大多数情况下(如99%),它忽略了它们。是否有一种方法可以确保我的扩展不忽略来自另一个扩展的请求?
我知道你会说我不应该绕过学校的网络过滤器,因为它是错误的,否则我会遇到麻烦。但我这样做只是因为我喜欢把事情弄清楚,我不会用它来做那些会给我或学校带来麻烦的事情。此外,我还做了其他类似的扩展,最近得到了修复,每个使用它们的人都非常希望我更新/修复我的应用程序。
是否有一种方法可以确保我的扩展不会忽略来自另一个扩展的请求?
。过去可以拦截来自其他扩展和应用程序的请求,但这被认为是一个安全漏洞——因为您可能会为更高权限的扩展污染数据。
因此,可以确保将忽略此类请求。
- 是否可以通过Chrome扩展内容脚本打开Chrome外部协议请求
- 打开一个选项卡,并在firefox网络扩展中向其发出POST请求
- 如何使用Chrome扩展API获取网页的所有HTTP请求
- 在 Chrome 扩展程序中通过发布请求发送网址加载
- 通过 Internet Explorer 扩展拦截 HTTP 请求
- 在firefox扩展上观察并保存http请求
- 当ajax请求发生时运行代码的Chrome扩展
- Google Chrome扩展HTTPS Ajax请求
- Chrome扩展:通过服务器上的JavaScript将请求发送到后台页面
- 从chrome扩展拦截HTTP请求正文
- Google Chrome扩展Http请求
- 在Chrome扩展中使用PAC文件重定向HTTPS请求似乎失败了
- 监视 Opera 扩展中的 http 请求
- 请求特定的外部协议时是否可以打开Chrome扩展程序
- Chrome 扩展程序 - Notification.requestPermission() 不请求权限
- 尝试在火狐扩展中获取 HTTP POST 请求
- 在 Chrome 扩展程序中为 HTTP 请求设置用户代理
- Chrome扩展JSONP请求访问全局变量
- 将 chrome 网络请求的 addeventlistener 限制为当前选项卡或扩展程序的主窗口
- 在Facebook上用Javascript请求扩展权限的正确方法是什么?