2013-08-30 125 views
13

這似乎是困難的問題(或不可能??)。 我想在瀏覽器中看到Chrome擴展後臺腳本,並在瀏覽器中讀取由HTTP請求引起的HTTP響應。 我們可以用這種方式Chrome擴展 - 如何獲得HTTP響應正文?

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

我也查得到HTTP請求正文這些stackoverflows

有沒有什麼聰明的方式來獲得HTTP響應體中Chrome擴展程序?

+1

有沒有一般的方法。它只能用於特定的用例。 –

回答

12

我找不到更好的方法,然後這個anwser。

Chrome extension to read HTTP response

的anwser告知如何得到響應頭並顯示在另一個page.But沒有在響應的obj沒有身體信息(見event-responseReceived)。如果你想得到迴應身體沒有另一頁,試試這個。

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

} 

我認爲這對我很有用,你可以使用chrome.debugger.detach(debuggeeId)關閉醜陋的提示。

對不起,mabye沒有幫助...^^

+1

使用'--silent-debugger-extension-api'命令行切換到午餐瀏覽器擺脫黃色欄,它必須是瀏覽器的第一個實例 –

+0

我一直沒有定義響應,你有什麼想法嗎? –

+0

我發現原因是「沒有找到給定的標識符的資源」(getResponseBody的requestId是錯誤的),但我不知道爲什麼它是錯誤的:( –