Edytować i odtwarzać ponownie XHR Chrome / Firefox itp.?


144

Szukałem sposobu na zmianę żądania XHR wysłanego w mojej przeglądarce, a następnie ponowne odtworzenie. Powiedzmy, że w przeglądarce zostało wykonane pełne żądanie POST, a jedyną rzeczą, którą chcę zmienić, jest mała wartość, a następnie odtworzenie jej ponownie. Byłoby to o wiele łatwiejsze i szybsze do zrobienia bezpośrednio w przeglądarce.

Wyszukałem trochę w Google i nie znalazłem sposobu, aby to zrobić w Chrome lub Firefox. Czy można to zrobić w jednej z tych przeglądarek, a może w innej?


Jeśli wylądujesz tutaj po zorientowaniu się, że „Replay XHR” nie działa w Chrome, pamiętaj, że w przypadkach z OPTIONSżądaniami preflight ( ) musisz kliknąć „replay” w żądaniu preflight - a nie w rzeczywistym żądaniu końcowym.
— Janaka Bandara

Odpowiedzi:


180

Chrome:

  • W panelu Sieć narzędzi devtools kliknij prawym przyciskiem myszy i wybierz opcję Kopiuj jako cURL
  • Wklej / edytuj żądanie, a następnie wyślij je z terminala, zakładając, że masz curlpolecenie

Zobacz zdjęcie:

wprowadź opis obrazu tutaj

Ewentualnie, w przypadku konieczności wysłania żądania w kontekście strony internetowej , wybierz „Kopiuj jako pobranie” i edytuj-wyślij zawartość z panelu konsoli javascript.


Firefox:

Firefox umożliwia edycję i ponowne wysyłanie XHR bezpośrednio z panelu Sieć. Poniższe zdjęcie pochodzi z przeglądarki Firefox 36:

wprowadź opis obrazu tutaj


To może być właśnie to, czego szukam. Wiedziałem, że mogę skopiować wywołanie cURL, ale nie mogłem uruchomić tego bezpośrednio z mojego terminala, ponieważ zostałbym uwierzytelniony. Ale jeśli terminal jest wbudowany bezpośrednio w Chorme, zakładam, że połączenie jest wykonywane „z” przeglądarki. Jeśli tak, to powinno to przypieczętować umowę.
— madsobel

14
Dodałem informacje o Firefoksie w odpowiedzi
— Michael P. Bazos

Mała sztuczka: jeśli chcesz zobaczyć wyjście cURL w przeglądarce, uruchom je w CLI w ten sposób, curl ... > preview.htmla następnie otwórz plik w przeglądarce.
— afilina

@afilina, aby jeszcze bardziej zautomatyzować ten proces, możesz dodać && open preview.htmlna macOS, a plik zostanie otwarty bezpośrednio po żądaniu
— CodeBrauer

2
W tym przypadku Firefox radzi sobie zdecydowanie lepiej!
— jpenna

41

Chrome ma teraz Copy as fetch w wersji 67:

Skopiuj jako pobranie

Kliknij prawym przyciskiem myszy żądanie sieciowe, a następnie wybierz opcję Kopiuj> Kopiuj jako pobieranie, aby skopiować fetch()kod -równoważny dla tego żądania do schowka.

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

Przykładowe dane wyjściowe:

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

Różnica polega na tym, że Kopiuj jako cURL będzie zawierać również wszystkie nagłówki żądań (takie jak Cookie i Accept) i nadaje się do ponownego odtwarzania żądania poza Chrome. fetch()Kod jest odpowiedni dla odtwarzając wewnątrz tej samej przeglądarce.


6
Dziękuję Ci za to. Dla każdego, kto się zastanawia - możesz po prostu wkleić fetchpolecenie bezpośrednio w konsoli Chrome i powtórzyć żądanie.
— Eric Kigathi

7
Możesz użyć następującego polecenia po pobraniu, aby rozwiązać obietnicę zwróconą przez pobranie i wyświetlenie treści odpowiedzi (zakładając, że jest to JSON).then(r => r.json()).then(json => console.log(json))
— zgodne z POSIX

1
@Josh Lee, myślę, że wskazówki zgodne z POSIX były dobre i można je dodać do tej odpowiedzi.
— Nabi KAZ

@ Dobre wskazówki zgodne z POSIX, czy jest jakieś mniejsze polecenie, o którym mógłbym pamiętać ?!
— Nabi KAZ

Dla tych, którzy zastanawiają się, gdzie wkleić kod pobierania: wklej go i zmodyfikuj na konsoli
— dotista2008

20

Moje dwie sugestie:

  1. Wtyczka Postman do Chrome + wtyczka Postman Interceptor . Więcej informacji: Listonosz przechwytuje dokumenty żądań

  2. Jeśli korzystasz z systemu Windows, opcją jest Telerik Fiddler. Ma opcję kompozytora do odtwarzania żądań http i jest bezpłatna.


8
Odkąd zacząłem używać Postman + rozszerzenie do Chrome Interceptor, nie potrzebowałem Fiddlera.
— Threadster

3
Aplikacja FYI Postman dla Chrome jest teraz przestarzała, a jej skonfigurowanie w wersji samodzielnej jest nieco trudniejsze
— yefrem

dzięki dużo tylko tego, czego szukałem!
— Mohammad


4

W przypadku przeglądarki Firefox problem sam się rozwiązał. Posiada zaimplementowaną funkcję „Edytuj i wyślij ponownie”.

Wydaje się, że rozszerzenie Chrome Tamper załatwia sprawę.


Który nie jest już aktualizowany i ma raczej złe recenzje. Najlepszą alternatywą jest użycie Firefoksa do tego rodzaju pracy imo.
— T3rm1

Tak. Sytuacja ponownego wysłania wydaje się zmieniać dość szybko. Teraz Chrome ma żądania ponownego wysłania do XHR, ale nie pozwala na edycję.
— Jari Turkia

uważaj na przeglądarkę Firefox w wersji 76, która wydaje się mieć problem z tokenem CSRF w plikach cookie podczas edycji i ponownego wysyłania. Próbowałem z wersją 37, działało dobrze, ale z wersją 76 ma problem z walidacją tokenu CSRF.
— puppyceceyoyo

1

Minęło 5 lat i twórcy Chrome nie zignorowali tego podstawowego wymagania.
Chociaż nie oferują żadnej metody edycji danych, jak w Firefoksie, oferują pełną powtórkę XHR.
Pozwala to na debugowanie wywołań ajax. „Replay XHR” powtórzy całą transmisję.
wprowadź opis obrazu tutaj


0

Jest na to kilka sposobów, jak wspomniano powyżej, ale z mojego doświadczenia wynika, że ​​najlepszym sposobem na manipulowanie żądaniem XHR i ponowne wysłanie jest użycie narzędzi chrome dla programistów do skopiowania żądania jako żądania cURL (kliknij prawym przyciskiem myszy żądanie na karcie sieciowej ) i po prostu zaimportować do aplikacji Postman (gigantyczny przycisk importu w lewym górnym rogu).


0

Nie ma potrzeby instalowania rozszerzeń innych firm!

Istnieje fragment kodu javascript , który można dodać jako zakładkę przeglądarki, a następnie aktywować w dowolnej witrynie, aby śledzić i modyfikować żądania. To wygląda jak:

wprowadź opis obrazu tutaj

Aby uzyskać dalsze instrukcje, przejrzyj stronę github.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.