Я пытаюсь изменить тело запроса запроса, чтобы показать инструмент исследования в документах Google. Я могу вызвать каждый запрос, который соответствует, и вытащить тело запроса form_data, но я не вижу никакого способа изменить тело запроса и передать его. Все, что мне нужно сделать, это изменить docs-show_reference на false.Modify Request Body
Блокировка запроса не работает, поскольку страница затем инициирует запрос еще раз, что приводит к циклу. Кажется, я не могу правильно изменить заголовки запросов, чтобы заблокировать запрос, поскольку единственное, что нужно изменить, находится в теле запроса form_data. Также не представляется возможным возвратить модифицированный объект запроса через chrome.webRequest
Расширение также блокирует все адреса не-документов (которые также работают).
Вот код, который я использую (который инициирует цикл переадресации). Все разрешения и конфиг в manifest.json также работают правильно.
chrome.webRequest.onBeforeRequest.addListener(
function(info) {
var request = info.requestBody;
if (info.url.indexOf(chrome.runtime.id) > -1) {
console.log("popup: %s",info.url);
return;
}
if (info.url.indexOf("docs.google.com") > -1){
if (request && request.formData && request.formData.preferences && request.formData.preferences[0] == '{"docs-show_reference":true}') {
return {cancel:true};
} else {
return {cancel:false};
}
}
if (info.url.indexOf('gstatic') > -1) {
return {cancel:false};
}
console.log("blocked: %s",info.url);
return {redirectUrl:chrome.extension.getURL("blocked.png")};
},
// filters
{
urls: [
"<all_urls>"
]
},
// extraInfoSpec
["blocking", "requestBody"]
);