2013-08-30 4 views
13

Bu zor bir problem gibi görünüyor (ya da imkansız?). Chrome Extension arka plan komut dosyasını izlerken, tarayıcıda HTTP İsteği'nin neden olduğu HTTP Yanıtını almak ve okumak istiyorum. Biz HTTP Yanıt Vücut almak için herhangi bir akıllı yolu var mı bu stackoverflowsChrome Uzantısı - HTTP Yanıt Gövdesi nasıl alınır?

Ben de kontrol

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

bu şekilde HTTP İstek Vücut alabilirsiniz Chrome Uzantısı

+1

Genel bir yöntem yoktur. Sadece belirli kullanım durumları için mümkündür. –

cevap

12

Bu anwser'dan daha iyi bir yol bulamıyorum.

Chrome extension to read HTTP response

anwser

başka page.But içinde yanıt başlıklarını ve ekran tepkisi obj hiçbir vücut bilgisi ( event-responseReceived bakınız) olduğunu nasıl anlattı. Başka bir sayfa olmadan gövde yanıtını almak istiyorsanız, bunu deneyin.

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

} 

benim için yeterince yararlı olduğunu düşünüyorum ve çirkin ucu kapatmak için chrome.debugger.detach(debuggeeId) kullanabilirsiniz.

Üzgünüz, mabye yardımcı değil ...^^

+1

'--silent-debugger-extension-api' komut satırı geçişini tarayıcıdan sarı bardan kurtulmak için kullanın, tarayıcının ilk örneği olmalıdır –

+0

Yanıt için undefined almaya devam ediyorum, herhangi bir fikrin var mı? –

+0

"Belirtilen tanımlayıcı bulunamadı kaynak yok" (getResponseBody'nin requestId öğesi yanlıştır) nedenini buldum, ancak neden yanlış olduğunu bilmiyorum :( –