Использование browser.webRequest.onBeforeRequest.addListener()
Я могу фильтровать HTTP-запросы и изменять источник страниц, прежде чем они будут возвращены. Мне нужно перехватить HTTP-запросы POST и изменить данные, отправленные формой, перед отправкой на сервер. Проверьте код:
browser.webRequest.onBeforeRequest.addListener(
function(details) {
// The code in this if is just some experimentation.
if(details.method == "POST") {
let filter = browser.webRequest.filterResponseData(details.requestId)
let decoder = new TextDecoder("utf-8")
let encoder = new TextEncoder()
filter.ondata = event => {
let str = decoder.decode(event.data, {
stream: true
});
console.log(str)
}
// This is a where I attempt to modify POST data.
let formData = details.requestBody.formData;
//console.log(formData)
if(formData) {
Object.keys(formData).forEach(key => {
formData[key].forEach(value => {
//console.log(key)
if(key == 'testField'){
//console.log("found", formData[key])
details.requestBody.formData[key] = "INJECTED"
console.log('injected', details.requestBody.formData[key])
}
})
})
}
return {details: details};
}
},
{urls: ["https://example.com/*"]},
["blocking", "requestBody"]
);
Последний console.log
печатает измененное значение, но возврат details
не передает измененное значение на сервер. Как я могу использовать onBeforeRequest
(или любой другой метод) в расширении Firefox для изменения переменных POST перед их отправкой на сервер?
Я не хочу вставлять код в веб-страницу. Я хочу отфильтровать траффи c.