问题标签 [chrome-webrequest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
674 浏览

firefox - webRequest API 重定向使用父请求的 http 方法

我在 WebExtension 中使用webRequest-API来监视客户端发出的请求。这工作得很好,但是在重定向的情况下,API 的行为并不像预期的那样:

在这种情况下POST,发出 a 并以 a302 FOUND和一个新位置作为回答。GET我的浏览器(Firefox 57、其他版本和其他浏览器 - 例如 Chrome - 以相同的方式运行)遵循此重定向,现在向新位置发出 a 。

在此处输入图像描述

不幸的是,webRequest-API 的行为不同:它跟踪第一个POST请求(这是正确的),但也将第二个请求作为 a 处理POST,而它应该是 a GET。这是一个严重的问题,因为 API 跟踪了我的浏览器应该做的事情,而实际上它以另一种方式做了......

这个场景(浏览器部分)可以通过这个链接复制到 surfnet.nl并从列表中选择一个 IDP(例如 Academisch Medisch Centrum)。

所以,长话短说:为什么 webRequest-API 的行为与浏览器的行为方式不同?有没有办法让它准确地跟踪浏览器的操作?

有趣的是,关于文档,webRequest-API 可能会正确执行:

即使规范要求方法和主体在执行重定向时不被更改,也不是所有的用户代理都符合这里[浏览器显然改变了方法!],您仍然可以在那里找到有缺陷的软件。因此,建议仅将 302 代码设置为 GET 或 HEAD 方法的响应,并改用 307 临时重定向,因为在这种情况下明确禁止更改方法。如果您希望将使用的方法更改为 GET,请改用 303 See Other。


编辑: 似乎浏览器302由于历史原因改变了方法,即使它与RFC 2616相矛盾......

无论如何......问题仍然存在:我怎样才能诱导 webRequest-API 以同样的方式行事?

0 投票
0 回答
277 浏览

google-chrome-extension - 我可以让浏览器扩展返回 Web 请求的自定义响应吗?

在 Firefox 或 Chrome(1) 扩展(使用 WebExtensions)中,是否可以中断请求并返回替代响应,从而阻止网络请求?我想做的是使用存储 API(动态地)存储一些 html 数据,然后在浏览器尝试发送特定请求时返回该 html。

webRequest.onBeforeRequest似乎只支持取消请求或返回重定向。有没有办法重定向到返回数据的扩展内部的东西?还是一种直接制作和返回响应的方法?

(1) webRequest 的 Chrome 文档似乎反映了与 Firefox 文档相同的现实,并且似乎 Firefox 故意采用了大部分 WebExtensions 以与 Chrome 保持一致。

0 投票
0 回答
98 浏览

javascript - webRequest 和 sendMessage API 的不可预测的结果

我正在制作一个 chrome 扩展,它将:

  1. 检测 POST 请求
  2. 向发出请求的选项卡中运行的内容脚本发送消息
  3. 从 DOM 中检索一些数据并使用 sendResponse 将其发回

但大多数时候我得到“未定义”作为从 sendResponse 发送的消息。

我做了一个虚拟扩展来进一步调试它,奇怪的是它有时只工作。在比较请求的 responseHeaders 后,我无法确定此行为的原因。

我用它来测试,点击“相关搜索”按钮。 https://www.gamiss.com/wholesale-cheap/buckle-leather-belt/

我在这里想念什么?

清单.json

测试背景.js

测试内容.js

0 投票
0 回答
305 浏览

google-chrome-extension - Rx.js,处理 Chrome 扩展 webrequest API 回调函数

我正在尝试使用 Rx.js 来处理 Chrome 扩展 webrequest API 的流程。

每个 webrequest addListener() 调用都将强制回调函数作为第一个参数。这会将请求对象发送到函数。但是,回调可以返回确定请求进一步生命周期的webRequest.BlockingResponse 。

作为可观察的一部分,我正在努力处理阻塞响应。

此代码适用于检查所有图像请求,例如

然后我可以使用所有的 Rx.js 操作符来操作请求:

等等

但是,如果在处理图像的过程中,我希望取消请求,我需要以某种方式返回一个阻塞响应对象,例如 {cancel:true} 到包装 chrome.webRequest.onBeforeRequest.addListener 回调的 observable功能。

目前我不知道如何做到这一点。

非常感谢任何帮助。

0 投票
0 回答
471 浏览

google-chrome-extension - webRequest.onBeforeSendHeaders/2 的事件处理程序出错:错误:参数 4 的值无效。属性“$$state”:意外属性

我正在编写 chrome 扩展程序,但出现此错误

我什至不确定它来自哪里,所以不确定要提供什么代码片段才能开始。

知道我应该如何阅读此错误消息吗?“onBeforeSendHeaders/2”中的“/2”是什么意思?

也许我的听众中有一个线索(为了我们而简化。我真的在做一个 ajax 提取来获取数据,然后再返回标题的承诺)

奖金问题。在 Promise 中解析时,侦听器似乎没有添加我注入的标头。如果我直接返回 {requestHeaders: ...} 就可以了。

想法?

0 投票
0 回答
517 浏览

google-chrome-extension - 如何使用 chrome.webRequest API 更改 http 方法

我正在使用 chrome.webRequest API 来修改传入的请求和响应。但是,我最近遇到了需要拦截 POST 调用并将其更改为 GET 调用的场景。我尝试更改在回调中获得的对象中的方法,但徒劳无功。

知道我应该怎么做才能使用 Chrome Web Request API 更改 http 方法吗?

谢谢K

0 投票
1 回答
1031 浏览

firefox-addon-webextensions - WebExtensions:browser.webRequest.onCompleted 永远不会触发

我正在使用带有以下后台脚本的Firefox WebExtensions API

从 加载脚本后about:debugging,我在 DevTools 中看到以下输出:

来自浏览器扩展的你好世界

我没有看到任何输出 - 没有数据browser.webRequest.onCompleted.addListener,也没有“添加的侦听器”消息。

我怎么做browser.webRequest.onCompleted

为了完整起见,我manifest.json的如下:

0 投票
0 回答
340 浏览

google-chrome-extension - Chrome 扩展使用 webrequest 取消阻止被阻止的 url

我正在尝试使用 chrome.webrequest api 解除阻止被阻止的 URL,我浏览了 api 文档并实现了。它阻止了 url,但是在它之后,当我运行代码的解除阻止部分时,它并没有解除阻止 url。下面是解锁部分的代码。有办法吗? chrome.webRequest.onBeforeRequest.addListener( function(details) { return { } }, {urls: ["url to be unblocked "]}, ["requestBody"]);

0 投票
1 回答
584 浏览

javascript - How do i get referer from chrome extension webRequest api?

I'm trying to get complete referer from chrome extension's webRequest api. This is how my function looks like. I need to find alternative to details.initiator, as it's not enough precise.

Update: It can be also alternative to webRequest api, as i just need something, what tracks all requests made by the browser. Was considering also onRequest, but i'm not sure if it's not deprecated.

0 投票
1 回答
168 浏览

google-chrome - 在 webRequest.onBeforeRequest 上添加 redirectUrl 后,Chrome 扩展无法正确加载

我正在尝试使用chrome.webRequest API 开发 chrome 扩展。我的扩展程序会将https://google.com重定向到https://stackoverflow.com。功能方面它工作正常,但在 chrome webRequest API 中添加 redirectUrl 后,我的 chrome 扩展程序无法正确加载。

这是我的manifest.json文件:

popup.html

背景页面.js

如果我在 backgroundPage.js 中更改 redirectUrl,如下所示(无重定向)

重定向网址:details.url

弹出窗口正常打开。像这样,

在更改 redirectUrl 之前

但是,如下所示更改 redirectUrl 后,

重定向网址:“ https://stackoverflow.com

弹出窗口未正确打开,但重定向工作正常。

添加重定向后

我在这里错过了什么吗?这些类型的行为通常会在什么时候发生?谢谢。