javascript - 使用 webRequest 取消另一个扩展发出的请求

标签 javascript html google-chrome google-chrome-extension google-chrome-app

我已成功使用 webRequest API 阻止我访问的网站发出的所有 xmlhttp 请求。但是,我的目标是绕过我们学校 chromebook 上安装的内容安全过滤器。该扩展的工作原理是读取选项卡的 URL 并向其服务器发送 xmlhttprequest 来询问网站是否被阻止。我已经确定,如果我取消向其服务器发出的所有这些 xmlhttp 请求,则不会阻止任何网站。

我使用以下代码来狙击所有 xmlhttprequests。

chrome.webRequest.onBeforeSendHeaders.addListener(function(details){
    if(details.type=='xmlhttprequest')
    {
        return{cancel:true};
    }
},{urls: ['<all_urls>']},['blocking', 'requestHeaders']);

此代码非常适合阻止来自任何网站的请求(例如,您无法在启用此扩展的情况下播放 Spotify 音乐)。但 onBeforeSendHeaders 似乎忽略了来自扩展程序的请求。因此,此代码无法阻止学校扩展发送到其服务器的 xmlhttp 请求。我还有使用 onHeadersReceived 和 onBeforeRequest 阻止 xmlhttprequests 的代码,但它们都有相同的问题。它们会阻止从网站发出的请求,但不会识别来自扩展程序的请求。

奇怪的是,有时这段代码实际上可以工作,并且会阻止扩展程序发出的请求,但大多数情况下(比如 99%),它会忽略它们。 有没有办法确保我的扩展程序不会忽略其他扩展程序发出的请求?

我知道您会说我不应该绕过学校的网络过滤器,因为这是错误的,否则我会遇到麻烦。但我这样做只是因为我喜欢解决问题,而且我不会用它来做会给我或学校带来麻烦的事情。另外,我还制作了其他类似的扩展,这些扩展最近得到了修复,每个使用它们的人都非常希望我更新/修复我的应用程序。

最佳答案

Is there a way to ensure that my extension doesn't ignore the requests made from another extension?

没有。过去可以拦截来自其他扩展和应用程序的请求,但这被认为是 security bug - 因为您可能会污染更高权限扩展的数据。

因此,可以确保您忽略此类请求。

关于javascript - 使用 webRequest 取消另一个扩展发出的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39627911/

相关文章:

javascript - 在以下情况下,如何在主菜单悬停时显示子菜单项?

php - 为什么点击标签<a>后,页面刷新并且appendTo不起作用?

html - 部分悬停由 CSS3 激活和不激活

html - 显示不同高度的 GridView ——HTML

html - Chrome- 显示 :none options in select

css - SVG 在 Chrome 中看起来有不透明度,但实际上没有,如何解决?

javascript - 用于单元测试的模拟文件输入

javascript - 如何在不更改 map 中心的情况下在谷歌地图中加载 KML

android - 在 Android Chrome 浏览器上自动播放 html 视频在不同的浏览器版本上不一致

javascript - componentDidMount 生命周期方法中的条件异步操作不断循环