2012-07-21 10 views
14

Sono consapevole che chrome.webRequest.onBeforeRequest consente di intercettare, analizzare e bloccare una richiesta, ma consente solo l'accesso alle intestazioni della richiesta e non al corpo della richiesta (per quanto ne so).Intercetta il corpo della richiesta HTTP dall'estensione chrome

Caso di utilizzo del campione: pensare ai valori del modulo di intercettazione.

Sembra che ci sia una proposta di modifica dell'API here che suggerisce esattamente questo.

C'è un altro modo in cui questo potrebbe essere realizzato?

Grazie.

+2

Intercettare corpi di risposta/richiesta non è possibile utilizzando il built-in API Chrome. La [parte rilevante dell'ultimo codice sorgente] (http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/api/web_request/) non contiene alcun segno di tale caratteristica. Se non puoi vivere senza la funzione, puoi esplorare le [possibilità] (http://stackoverflow.com/tags/npapi/info) di [plugin NPAPI] (http://code.google.com/chrome /extensions/npapi.html), oppure lancia un server (locale) e reindirizza richieste specifiche al tuo server locale. –

+0

Questo è un peccato. NPAPI sembra eccessivo per i miei bisogni. Grazie per la risposta però. – Ped

risposta

9

Questa funzionalità è stata aggiunta all'API ora, vedere documentation.

Al fine di accedere al corpo è necessario effettuare le seguenti operazioni:

chrome.webRequest.onBeforeRequest.addListener(
    function(details) 
    { 
     console.log(details.requestBody); 
    }, 
    {urls: ["https://myurlhere.com/*"]}, 
    ['requestBody'] 
); 
+0

Gee, è fantastico. Grazie per il ping. – Ped

+1

Per me torna sempre indefinito. Forse solo per il canale beta? – BeauCielBleu

+0

@BeauCielBleu potrebbe non esserci alcun corpo di richiesta. Prova invece a registrare l'URL: 'console.log (" url: "+ details.url);' – georgiecasey

2

Anche se non si è in grado di intercettarlo, è possibile utilizzare l'approccio AJAX standard per il duct-tape. Invece di fare la richiesta href vedere se è possibile effettuare una chiamata asincrona e salvarla su un oggetto HTML che non è presentato. Quindi raschia/leggi/analizza/qualunque sia il criterio del tuo corpo e, se passa, sposta l'oggetto del corpo nella pagina/pagina corrente.

Memorizzare il contenuto in un elemento soppresso e quindi utilizzare lo stesso elemento per il contenuto consentirebbe di evitare di effettuare chiamate duplicate. Il rovescio della medaglia è che otterrai il contenuto completo per cose che non finirai usando. Questo può o non può essere un problema di prestazioni di larghezza di banda/velocità.

Problemi correlati