2013-08-30 18 views
13

Wydaje się, że jest to trudny problem (lub niemożliwe?). Chcę uzyskać i odczytać odpowiedź HTTP, spowodowaną żądaniem HTTP w przeglądarce, pod obserwacją skryptu tła Chrome Extension. Możemy żądania HTTP ciała w ten sposóbRozszerzenie Chrome - jak zdobyć ciało odpowiedzi HTTP?

chrome.webRequest.onBeforeRequest.addListener(function(data){ 
    // data contains request_body 
},{'urls':[]},['requestBody']); 

sprawdziłem również te stackoverflows

Czy jest jakiś sprytny sposób, aby uzyskać HTTP treść odpowiedzi w Rozszerzenie Chrome?

+1

Nie ma ogólnej metody. Jest to możliwe tylko w określonych przypadkach użycia. –

Odpowiedz

12

Nie mogę znaleźć lepszego sposobu niż ten anwser.

Chrome extension to read HTTP response

anwser powiedział jak dostać nagłówki odpowiedzi i wyświetlacz w innym page.But nie ma informacji organizm w odpowiedzi obj (patrz event-responseReceived). Jeśli chcesz uzyskać odpowiedź body bez innej strony, spróbuj tego.

var currentTab; 
var version = "1.0"; 

chrome.tabs.query(//get current Tab 
    { 
     currentWindow: true, 
     active: true 
    }, 
    function(tabArray) { 
     currentTab = tabArray[0]; 
     chrome.debugger.attach({ //debug at current tab 
      tabId: currentTab.id 
     }, version, onAttach.bind(null, currentTab.id)); 
    } 
) 


function onAttach(tabId) { 

    chrome.debugger.sendCommand({ //first enable the Network 
     tabId: tabId 
    }, "Network.enable"); 

    chrome.debugger.onEvent.addListener(allEventHandler); 

} 


function allEventHandler(debuggeeId, message, params) { 

    if (currentTab.id != debuggeeId.tabId) { 
     return; 
    } 

    if (message == "Network.responseReceived") { //response return 
     chrome.debugger.sendCommand({ 
      tabId: debuggeeId.tabId 
     }, "Network.getResponseBody", { 
      "requestId": params.requestId 
     }, function(response) { 
      // you get the response body here! 
      // you can close the debugger tips by: 
      chrome.debugger.detach(debuggeeId); 
     }); 
    } 

} 

Myślę, że to na tyle przydatne dla mnie i można korzystać chrome.debugger.detach(debuggeeId) aby zamknąć brzydkie końcówki.

Przepraszam, nie podoba mi się pomocne ...^^

+1

użyj przełącznika linii komend '--silent-debugger-extension-api', aby wyskoczyć z przeglądarki, aby pozbyć się żółtego paska, musi to być pierwsza instancja przeglądarki. –

+0

Ciągle się nie nadaje do odpowiedzi, masz jakiś pomysł? –

+0

Znalazłem powód "Brak zasobu z podanym identyfikatorem" (requestId getResponseBody jest nieprawidłowy), ale nie mam pojęcia, dlaczego jest źle :( –

Powiązane problemy