繁体   English   中英

Firefox WebExtensions:无法获取取消的请求数据

[英]Firefox WebExtensions: can not get canceled request data

在使用Firefox WebExtensions期间,我创建了一个简单的附加组件,可以取消某些POST请求并读取其参数:

的manifest.json

{
  "description": "Canceled webRequests data",
  "manifest_version": 2,
  "name": "webRequest-demo",
  "version": "1.0",

  "permissions": [
    "webRequest",
    "webRequestBlocking",
    "http://kamil.hism.ru/pocs/*"
  ],

  "background": {
    "scripts": ["background.js"]
  }
}

background.js

var pattern = "http://kamil.hism.ru/pocs/simple_form_action";

function cancel(requestDetails) {
  console.log("Canceling: " + requestDetails.url);
  console.log(requestDetails.requestBody.formData.some_field)
  // debugger
  return { cancel: true };
}

browser.webRequest.onBeforeRequest.addListener(
  cancel,
  { urls:[pattern] },
  ["requestBody", "blocking"]
);

带有表单的目标页面位于: http://kamil.hism.ru/pocs/simple_form.htmlhttp://kamil.hism.ru/pocs/simple_form.html

requestDetails包含requestBody ,它应该包含带有所有传递数据的formData对象。 在Chrome中,它运行良好,但在Firefox中, requestBody只包含带有ArrayBuffer对象的raw数组。 我试图使用String.fromCharCode.apply(null, new Uint16Array(requestDetails.requestBody.raw[0]));将其转换为字符串String.fromCharCode.apply(null, new Uint16Array(requestDetails.requestBody.raw[0])); ,但它返回空字符串。

所以,问题是:有没有人知道如何使用Firefox WebExtension插件解决该问题并从取消的请求中获取所有数据? 也许这是Mozilla实现WebExtensions的一些错误?

在Mozilla社区的帮助下,事实证明这实际上是Firefox WebExtensions中的一个错误。 虽然我找不到与之相关的bugzilla中的确切发行说明或错误,但Firefox Nightly build(53.0a)没有此问题

在此输入图像描述

希望Nightly的这些变化很快就会合并到Release频道。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM