Как получить доступ к необработанному ответу на данные из сообщения формы в аддоне Firefox? - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь создать аддон Firefox, где пользователь заполняет форму и отправляет ее на сервер. Я хотел бы знать, как получить доступ к ответу с сервера. В этом примере ответом является ["SUCCESS", "createAccount"]

Я вижу данные в этом небольшом всплывающем окне, которое появляется после того, как я нажимаю кнопку Отправить, на вкладке Необработанные данные. (см. рисунок). enter image description here

Я просто не знаю, как получить доступ к этому из моего кода. Кажется, это должно быть просто, но я не могу понять это.

Я попытался переопределить методы / слушатели onsubmit и onclick, чтобы направить их через ajax / XMLHttpRequest, но получаю ошибку безопасности контента ( Политика безопасности контента: настройки страницы заблокировали загрузку ресурса при самостоятельном ( «Script-src»). Источник: атрибут onclick для элемента BUTTON.)

Я посмотрел другие SO сообщения, ни один из них не предназначен специально для ответов из форм в аддоне.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 04 июля 2018

Ответ должен использовать webRequests.filterResponseData .

Код выглядит примерно так:

    var rawdata;
    var listener = function(result){
      let filter = chrome.webRequest.filterResponseData(result.requestId);  //https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/webRequest/filterResponseData
      filter.ondata = event => {
      self.data = {
          data: Array.apply(null, new Uint8Array(event.data)),

          contentType: result.type
      };
      rawdata = arrayBufferToData.toJSON(event.data);  

      }
       filter.onstop = event => {
       filter.disconnect();
      }

    }
  browser.webRequest.onHeadersReceived.addListener(listener, {urls: ["<all_urls>"]},["blocking"]);

rawdata будет иметь правильные значения. Спасибо IceCub за указание правильного пути.

arrayBufferToData происходит от здесь

К сожалению, это работает только для Firefox, а не Chrome.

...