2013-05-31 14 views
5

Ho un'estensione di Chrome e sto attualmente utilizzando l'API di richiesta web. La mia domanda è semplice, è possibile bloccare e modificare una richiesta AJAX con l'API di richiesta web? Se no, c'è un lavoro attorno a questo?Richieste di blocco e modifica di AJAX utilizzando webRequest

PS. Sto cercando di iniettare pezzi di HTML in una email GMail ma l'unica soluzione che ho trovato finora riguarda il rilevamento di tutti i vari tipi di composes e quindi l'iniezione del mio HTML. Questo metodo va bene tranne che per l'instabile, solo circa il 70% delle volte che l'inserimento funziona.

Se c'è un modo migliore, fammi sapere, grazie!

EDIT

Trovato alcune soluzioni alternative se qualcuno ha bisogno.

  • Sovrascrivere il metodo predefinito XMLHttpRequest.send per trasmettere un evento. È possibile modificare la richiesta prima che venga inviata.
  • Ignora il modulo predefinito metodo di invio e intercettare ogni forma sottopone prima di essere presentati (modificare i dati del modulo)
+0

Anche ehre: https://stackoverflow.com/q/23561805/632951 – Pacerier

risposta

2

Attualmente non esiste alcun modo per accedere o modificare il corpo della risposta utilizzando la webRequest api. C'è un open issue in cromo che richiede questa funzione. Hanno recentemente implementato la capacità di accessing the request body, quindi potrebbe esserci la possibilità che aggiungano anche questo.

È possibile avere maggiore fortuna con le tecniche che modificano l'oggetto XMLHttpRequest, come descritto in this answer. Here avete un caso studio passo dopo passo in cui la risposta AJAX viene intercettata e modificata.

+0

Ho avuto la sensazione che non fosse possibile, spero davvero che lo implementino presto ma grazie per gli ottimi collegamenti, dovrebbe essere una lettura interessante! – 1337holiday

+0

@rsanchez, Ma il richiedente domanda solo vuole bloccare non è vero? che è fattibile no? – Pacerier

2

Anche se è possibile rilevare XMLHttpRequests impostando esplicitamente il type property for chrome.webRequest a xmlhttprequest, sarà solo in grado di bloccare richieste asincrone.

XMLHttp sincrono Le richieste fatte dall'estensione sono nascoste dal blocco dei gestori di eventi al fine di evitare deadlock. Inoltre, l'API webRequest espone solo le chiamate effettuate ai pattern URi definiti nell'area permissions del file manifest.

+0

Già, sto già bloccando richieste da mail.google.com, in particolare XMLHttpRequests come hai affermato. Tuttavia è possibile modificare il responseBody di queste richieste con webrequest? Ho provato e non sembra essere supportato. – 1337holiday

+0

È a mia conoscenza che è possibile modificare l'oggetto responseHeaders solo utilizzando il metodo di blocco. Esiste una richiesta di funzionalità in sospeso per il tipo di controllo che desideri https://code.google.com/p/chromium/issues/detail?id=104058 – QFDev

+0

La parte chiave è "XMLHttpRequests sincrono ** creato dall'estensione * * ", quindi è possibile elaborare XHR sincroni da altre origini. E la domanda chiarisce che sono le richieste della pagina. – Xan