Firefox WebExtensions: невозможно получить отмененные данные запроса

Во время игры с 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.html

requestDetails содержит requestBody это должно содержать formData объект со всеми переданными данными. В Chrome это работает хорошо, но в Firefox requestBody содержит только raw массив с объектом ArrayBuffer. Я пытался преобразовать его в строку, используя String.fromCharCode.apply(null, new Uint16Array(requestDetails.requestBody.raw[0]));, но возвращает пустую строку.

Итак, вопрос: кто-нибудь знает, как решить эту проблему и получить все данные из отмененного запроса с помощью дополнения Firefox WebExtension? Может быть, это какая-то ошибка в реализации WebExtensions в Mozilla?

1 ответ

Решение

С помощью сообщества Mozilla выяснилось, что это на самом деле ошибка в Firefox WebExtensions. Хотя я не смог найти точную информацию о выпуске или ошибку в bugzilla, связанную с ней, Firefox Nightly build (53.0a) не имеет этой проблемы:

введите описание изображения здесь

Надеюсь, скоро эти изменения из Nightly будут объединены в канале Release.

Другие вопросы по тегам