Я хотел бы прочитать (не изменять) тело ответа для всех запросов, соответствующих шаблону в расширении Chrome. В настоящее время я использую chrome.devtools.network.onRequestFinished, который дает вам объект Request
с помощью метода getContent()
. Это работает отлично, но, конечно же, требует, чтобы devtools были открыты для продолжения работы. В идеале расширение будет всплывающим, но chrome.webRequest.onCompleted, похоже, не дает доступа к телу ответа. Существует запрос функции, чтобы позволить API WebRequest редактировать тела ответа - но может ли webRequest даже прочитать их? Если нет, есть ли другой способ прочитать тела ответа вне расширений devtools?
Расширения Chrome. Другие способы читать тела ответов, чем chrome.devtools.network?
Ответ 1
Запрос функции, на который вы ссылаетесь, подразумевает, что поддержка чтения также не поддерживается:
К сожалению, этот запрос не тривиален. (...) Что касается чтения тела ответа: это сложно с точки зрения производительности. (...) Так что в целом, это просто нелегко достичь...
Так что нет, похоже, у расширения нет доступа к телам сетевых ответов, кроме devtools.
Ответ 2
Вот что я сделал
- Я использовал
chrome.webRequest
&requestBody
для получения тела почтовых запросов - Я использовал
decoder
разобрать тело в строку
Вот пример
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
if(details.method == "POST")
// Use this to decode the body of your post
var postedString = decodeURIComponent(String.fromCharCode.apply(null,
new Uint8Array(details.requestBody.raw[0].bytes)));
console.log(postedString)
},
{urls: ["<all_urls>"]},
["blocking", "requestBody"]
);
Ответ 3
Если у вас есть этот шаблон запросов, вы можете запустить что-то подобное в файле background.html:
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://example.com/" + yourStringForPattern, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
var body = xhr.responseText;
// call some function to do something with the html body
}
}
xhr.send();