Во время воспроизведения с Firefox WebExtensions Я создал простую надстройку, которая отменяет определенный запрос POST и читает его Params:Firefox WebExtensions: не может получить отмененные данные запроса
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"]
);
целевая страница с формой является нахо ed here: 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?
который 'firefox' версия браузера вы используете? –
@pritishvaidya последняя версия firefox dev версия 52.0a2 (2017-01-09) (64-разрядная версия) –
Я думаю, вам может понадобиться * изменить * заголовок содержимого и установить его в 'Content-Type: text/html ; charset = utf-8', используя следующие [здесь] (https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/webRequest/HttpHeaders) –