37

我想阅读(而不是修改)与 Chrome 扩展中的某些模式匹配的所有请求的响应正文。我目前正在使用chrome.devtools.network.onRequestFinished,它为您提供了一个Request带有getContent()方法的对象。这工作得很好,但当然需要打开 devtools 才能使扩展工作。理想情况下,扩展将是一个弹出窗口,但chrome.webRequest.onCompleted似乎无法访问响应正文。有一个功能请求允许 webRequest API编辑响应正文 - 但 webRequest 甚至可以读取它们吗?如果没有,是否有任何其他方法可以读取 devtools 扩展之外的响应正文?

4

3 回答 3

7

您链接到的功能请求意味着不支持阅读:

不幸的是,这个请求并不是微不足道的。(...) 关于阅读响应正文:从性能的角度来看,这是具有挑战性的。(...)所以总的来说,这并不容易实现......

所以,不,除了 devtools 之外,似乎没有办法让扩展访问网络响应主体。

于 2013-08-26T14:32:56.830 回答
-2

这是我所做的

  1. 我使用chrome.webRequest&requestBody来获取帖子请求正文
  2. 我使用了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"]
);
于 2019-06-10T06:51:23.550 回答
-5

如果你有这种请求模式,你可以在你的 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();
于 2012-08-08T08:30:26.223 回答