问题标签 [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.
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相矛盾......
- https://stackoverflow.com/a/8139246/594832
- https://trac.ietf.org/trac/httpbis/ticket/160
- https://stackoverflow.com/a/8138447/594832
无论如何......问题仍然存在:我怎样才能诱导 webRequest-API 以同样的方式行事?
google-chrome-extension - 我可以让浏览器扩展返回 Web 请求的自定义响应吗?
在 Firefox 或 Chrome(1) 扩展(使用 WebExtensions)中,是否可以中断请求并返回替代响应,从而阻止网络请求?我想做的是使用存储 API(动态地)存储一些 html 数据,然后在浏览器尝试发送特定请求时返回该 html。
webRequest.onBeforeRequest似乎只支持取消请求或返回重定向。有没有办法重定向到返回数据的扩展内部的东西?还是一种直接制作和返回响应的方法?
(1) webRequest 的 Chrome 文档似乎反映了与 Firefox 文档相同的现实,并且似乎 Firefox 故意采用了大部分 WebExtensions 以与 Chrome 保持一致。
javascript - webRequest 和 sendMessage API 的不可预测的结果
我正在制作一个 chrome 扩展,它将:
- 检测 POST 请求
- 向发出请求的选项卡中运行的内容脚本发送消息
- 从 DOM 中检索一些数据并使用 sendResponse 将其发回
但大多数时候我得到“未定义”作为从 sendResponse 发送的消息。
我做了一个虚拟扩展来进一步调试它,奇怪的是它有时只工作。在比较请求的 responseHeaders 后,我无法确定此行为的原因。
我用它来测试,点击“相关搜索”按钮。 https://www.gamiss.com/wholesale-cheap/buckle-leather-belt/
我在这里想念什么?
清单.json
测试背景.js
测试内容.js
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功能。
目前我不知道如何做到这一点。
非常感谢任何帮助。
google-chrome-extension - webRequest.onBeforeSendHeaders/2 的事件处理程序出错:错误:参数 4 的值无效。属性“$$state”:意外属性
我正在编写 chrome 扩展程序,但出现此错误
我什至不确定它来自哪里,所以不确定要提供什么代码片段才能开始。
知道我应该如何阅读此错误消息吗?“onBeforeSendHeaders/2”中的“/2”是什么意思?
也许我的听众中有一个线索(为了我们而简化。我真的在做一个 ajax 提取来获取数据,然后再返回标题的承诺)
奖金问题。在 Promise 中解析时,侦听器似乎没有添加我注入的标头。如果我直接返回 {requestHeaders: ...} 就可以了。
想法?
google-chrome-extension - 如何使用 chrome.webRequest API 更改 http 方法
我正在使用 chrome.webRequest API 来修改传入的请求和响应。但是,我最近遇到了需要拦截 POST 调用并将其更改为 GET 调用的场景。我尝试更改在回调中获得的对象中的方法,但徒劳无功。
知道我应该怎么做才能使用 Chrome Web Request API 更改 http 方法吗?
谢谢K
firefox-addon-webextensions - WebExtensions:browser.webRequest.onCompleted 永远不会触发
我正在使用带有以下后台脚本的Firefox WebExtensions API
从 加载脚本后about:debugging,我在 DevTools 中看到以下输出:
来自浏览器扩展的你好世界
我没有看到任何输出 - 没有数据browser.webRequest.onCompleted.addListener,也没有“添加的侦听器”消息。
我怎么做browser.webRequest.onCompleted?
为了完整起见,我manifest.json的如下:
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"]);
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.
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 后,
重定向网址:“ https://stackoverflow.com ”
弹出窗口未正确打开,但重定向工作正常。
我在这里错过了什么吗?这些类型的行为通常会在什么时候发生?谢谢。


