2013-08-30 13 views
13

Это сложная проблема (или невозможная?). Я хочу получить и прочитать HTTP-ответ, вызванный HTTP-запросом в браузере, при просмотре фреймворка Chrome Extension. Мы можем получить HTTP Request Body таким образомРасширение Chrome - как получить тело ответа HTTP?

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

Я также проверил это stackoverflows

Есть ли умный способ получить HTTP Response Body в Расширение 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

Я нашел причину «Нет ресурса с заданным идентификатором» (requestId из getResponseBody ошибочно), но я понятия не имею, почему это неправильно :( –

Смежные вопросы