Modificare e riprodurre XHR chrome / firefox ecc.?


144

Ho cercato un modo per modificare una richiesta XHR effettuata nel mio browser e quindi riprodurla di nuovo. Supponiamo che nel mio browser sia stata eseguita una richiesta POST completa e che l'unica cosa che voglio modificare sia un valore ridotto, quindi riproducilo nuovamente. Questo sarebbe molto più facile e veloce da fare direttamente nel browser.

Ho fatto un po 'di ricerca su Google e non ho trovato il modo di farlo su Chrome o Firefox. C'è un modo per farlo in uno di quei browser o forse in un altro?


Se atterri qui dopo aver realizzato che "Replay XHR" non funziona in Chrome, tieni presente che nei casi con OPTIONSrichieste di preflight ( ) devi fare clic su "replay" sulla richiesta di preflight , non sull'effettiva richiesta finale.
Janaka Bandara,

Risposte:


181

Chrome:

  • Nel pannello Network di devtools, fai clic con il pulsante destro del mouse e seleziona Copia come cURL
  • Incolla / modifica la richiesta, quindi inviala da un terminale, supponendo che tu abbia il curlcomando

Vedi acquisizione:

inserisci qui la descrizione dell'immagine

In alternativa, e nel caso sia necessario inviare la richiesta nel contesto di una pagina Web , selezionare "Copia come recupero" e modificare-inviare il contenuto dal pannello della console javascript.


Firefox:

Firefox consente di modificare e inviare nuovamente XHR direttamente dal pannello Rete. Cattura di seguito è da Firefox 36:

inserisci qui la descrizione dell'immagine


Questo potrebbe effettivamente essere quello che sto cercando. Sapevo che avrei potuto copiare la chiamata cURL, ma non potevo eseguirla direttamente dal mio terminale poiché sarei stato autenticato. Ma con il terminale integrato direttamente in Chorme, suppongo che la chiamata venga effettuata "all'interno" del browser. In tal caso, questo dovrebbe sigillare l'affare.
Madsobel,

14
Ho aggiunto informazioni su Firefox nella risposta
Michael P. Bazos

Piccolo trucco: se vuoi vedere l'output di cURL nel browser, eseguilo nella CLI in questo modo, curl ... > preview.htmlquindi apri il file nel browser.
afilina,

@afilina per automatizzare ancora di più questo processo puoi aggiungere && open preview.htmlsu macOS e il file si apre direttamente dopo la richiesta
CodeBrauer

2
In questo caso, Firefox sta facendo un lavoro decisamente migliore!
jpenna,

41

Chrome ora ha Copia come recupero nella versione 67:

Copia come recupero

Fare clic con il tasto destro del mouse su una richiesta di rete, quindi selezionare Copia> Copia come recupero per copiare negli fetch()Appunti il codice equivalente per quella richiesta.

https://developers.google.com/web/updates/2018/04/devtools#fetch

Uscita campione:

fetch("https://stackoverflow.com/posts/validate-body", {
  credentials: "include",
  headers: {},
  referrer: "https://stackoverflow.com/",
  referrerPolicy: "origin",
  body:
    "body=Chrome+now+has+_Copy+as+fetch_+in+version+67%3A%0A%0A%3E+Copy+as+fetch%0ARight-click+a+network+request+then+select+**Copy+%3E+Copy+As+Fetch**+to+copy+the+%60fetch()%60-equivalent+code+for+that+request+to+your+clipboard.%0A%0A&oldBody=&isQuestion=false",
  method: "POST",
  mode: "cors"
});

La differenza è che Copia come cURL includerà anche tutte le intestazioni della richiesta (come Cookie e Accetta) ed è adatta per riprodurre la richiesta al di fuori di Chrome. Il fetch()codice è adatto per la riproduzione all'interno dello stesso browser.


6
Grazie per questo. Per chiunque si chieda: puoi semplicemente incollare il fetchcomando direttamente nella console di Chrome e riprodurre la richiesta.
Eric Kigathi,

7
È possibile utilizzare quanto segue dopo il recupero per risolvere la promessa restituita dal recupero e visualizzare il corpo della risposta (supponendo che sia JSON).then(r => r.json()).then(json => console.log(json))
conforme a POSIX

1
@Josh Lee, penso che i consigli conformi a POSIX siano buoni e possano essere aggiunti a questa risposta.
Nabi KAZ,

@ Buoni consigli conformi a POSIX, C'è un comando più piccolo che può essere tenuto a mente ?!
Nabi KAZ,

Per coloro che si chiedono dove incollare il codice di recupero: incollalo e modificalo sulla console
dotista2008

20

I miei due suggerimenti:

  1. Il plug-in Postman di Chrome + il plug -in Postman Interceptor . Ulteriori informazioni: Postman Capturing Request Docs

  2. Se sei su Windows, Fiddler di Telerik è un'opzione. Ha un'opzione compositore per riprodurre le richieste http ed è gratuito.


8
Da quando ho iniziato a utilizzare Postman + l'estensione cromata di Interceptor, non ho più avuto bisogno di Fiddler.
Threadster

3
L'app FYI Postman per Chrome è ora obsoleta e configurarla in versione standalone è un po 'più difficile
yefrem,

grazie mille proprio quello che stavo cercando!
Mohammad,


4

Per Firefox il problema si è risolto da solo. Ha implementata la funzione "Modifica e reinvia".

Per l' estensione Chrome Tamper sembra fare il trucco.


Che non viene più aggiornato e ha recensioni piuttosto negative. La migliore alternativa è utilizzare Firefox per questo tipo di lavoro imo.
T3rm1

Si. La situazione per il rinvio sembra cambiare abbastanza rapidamente. Ora Chrome ha richieste di invio per XHR, ma non consente la modifica.
Jari Turkia,

fai attenzione a Firefox ver.76 che sembra avere problemi con il token CSRF nei cookie quando Modifica e invia di nuovo. Provato con la versione 37 ha funzionato bene, ma con la versione 76 ha un problema di convalida del token CSRF.
Puppyceceyoyo,

1

Sono passati 5 anni e questo requisito essenziale non è stato ignorato dagli sviluppatori di Chrome.
Sebbene non offrano alcun metodo per modificare i dati come in Firefox, offrono un replay XHR completo.
Ciò consente di eseguire il debug delle chiamate Ajax. "Replay XHR" ripeterà l'intera trasmissione.
inserisci qui la descrizione dell'immagine


0

Esistono alcuni modi per farlo, come menzionato sopra, ma nella mia esperienza il modo migliore per manipolare una richiesta XHR e inviarla di nuovo è utilizzare gli strumenti di sviluppo di Chrome per copiare la richiesta come richiesta cURL (fare clic destro sulla richiesta nella scheda di rete ) e semplicemente importare nell'app Postman (pulsante di importazione gigante in alto a sinistra).


0

Non è necessario installare estensioni di terze parti!

Esiste lo snippet javascript , che puoi aggiungere come segnalibro del browser e quindi attivare su qualsiasi sito per tracciare e modificare le richieste. Sembra:

inserisci qui la descrizione dell'immagine

Per ulteriori istruzioni, consulta la pagina di github.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.