2013-08-30 14 views
13

Sembra essere un problema difficile (o impossibile ??). Desidero ottenere e leggere la risposta HTTP, causata dalla richiesta HTTP nel browser, sotto lo script di background dell'estensione di Chrome. Possiamo ottenere HTTP Request corpo in questo modoEstensione Chrome - Come ottenere il corpo della risposta HTTP?

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

Ho anche controllato questi stackoverflows

C'è un modo intelligente per ottenere HTTP corpo della risposta in Estensione Chrome?

+1

Non esiste un metodo generale. È possibile solo per casi d'uso specifici. –

risposta

12

Non riesco a trovare il modo migliore di questo anwser.

Chrome extension to read HTTP response

L'anwser ha detto come arrivare header di risposta e display in un'altra page.But ci sono info corpo nella risposta obj (vedi event-responseReceived). Se si desidera ottenere risposta corpo senza un'altra pagina, provare questo.

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); 
     }); 
    } 

} 

penso che sia abbastanza utile per me e si può usare chrome.debugger.detach(debuggeeId) per chiudere la punta brutto.

scusa, mabye non utile ...^^

+1

usa la riga di comando '--silent-debugger-extension-api' per pranzare il browser per eliminare la barra gialla, deve essere la prima istanza del browser –

+0

Continuo a ottenere undefined per la risposta, hai qualche idea? –

+0

Ho scoperto che il motivo è "Nessuna risorsa con identificatore dato trovato" (requestId di getResponseBody è errato), ma non ho idea del perché è sbagliato :( –

Problemi correlati