Rozszerzenie Chrome do modyfikowania wychodzących requestów przed wysłaniem — przydatne do testowania własnego endpointu API. Pozwala na podstawie wzorca URL zmienić:
- query string (dodać / ustawić / usunąć parametry),
- body (scalić z JSON-em lub zastąpić w całości),
- nagłówki (ustawić / usunąć).
Potrafi też modyfikować odpowiedź (Response), zanim dotrze do aplikacji:
podmienić status HTTP, nagłówki i body (scalić z JSON-em lub zastąpić), a dla
fetch również edytować odpowiedź interaktywnie w oknie.
Dwa tryby pracy reguły:
- statyczny — z góry zdefiniowane zmiany stosują się automatycznie,
- interaktywny — przy każdym pasującym requeście wyskakuje na stronie okno, w którym ręcznie zmieniasz URL, nagłówki i body dla tego konkretnego wywołania. Idealne do szybkiego testowania wielu wariantów.
Rozszerzenie nadpisuje window.fetch i XMLHttpRequest na stronie i modyfikuje
requesty tworzone przez JavaScript aplikacji. To jedyny sposób w Manifest V3, by
zmieniać body requestu (sieciowe API rozszerzeń tego nie potrafią).
Działa dla: requestów wysyłanych przez fetch/XHR z kodu strony (czyli
typowy frontend / SPA odpytujący Twoje API).
Nie obejmuje: nawigacji przeglądarki, requestów z innych rozszerzeń, Web
Workerów bez własnego kontekstu strony oraz sendBeacon. Ciała binarne
(FormData, Blob) można tylko zastąpić — tryb „scal z JSON" dotyczy body
w formacie JSON.
- Otwórz
chrome://extensions. - Włącz Tryb dewelopera (prawy górny róg).
- Kliknij Wczytaj rozpakowane i wskaż folder
request-modifier. - Ikona rozszerzenia pojawi się na pasku — kliknij ją, by zarządzać regułami.
Po edycji plików kliknij „Odśwież” na kafelku rozszerzenia, a następnie przeładuj testowaną stronę (content scripty wstrzykują się przy ładowaniu).
- Kliknij ikonę → + Dodaj regułę.
- Wzorzec URL — fragment adresu Twojego endpointu, np.
api.example.com/users. Dopasowanie „Zawiera tekst" wystarcza w większości przypadków; dla precyzji wybierz „Wyrażenie regularne". - Wybierz metody (puste = wszystkie).
- Uzupełnij sekcje, które chcesz zmienić:
- Query string — po jednej zmianie na linię:
page=1 debug=true -token (usuwa parametr token) - Nagłówki:
X-Debug: 1 -Authorization (usuwa nagłówek) - Body —
Scal z JSONnadpisuje/dodaje pola,Zastąppodmienia całość.
- Query string — po jednej zmianie na linię:
- Zapisz. Reguły działają natychmiast — przeładuj stronę, jeśli była otwarta przed instalacją.
Globalny przełącznik u góry popupu włącza/wyłącza wszystkie reguły naraz; każda reguła ma też własny przełącznik.
Popup rozszerzenia jest ograniczony przez Chrome do 600 px wysokości. Gdy potrzebujesz więcej miejsca, kliknij „⤢ Karta" w nagłówku — ten sam konfigurator otworzy się w pełnej karcie przeglądarki, bez limitu wysokości.
Ikona rozszerzenia na pasku świeci się na zielono, gdy Modifier jest włączony globalnie i istnieje co najmniej jedna aktywna reguła — czyli gdy coś realnie może zostać zmodyfikowane. W przeciwnym razie jest szara. Kolor aktualizuje się od razu po zmianie przełączników w popupie (ikona jest generowana w tle, nie wymaga plików graficznych).
Zaznacz w regule „Tryb interaktywny". Od tej pory każdy pasujący request zatrzyma się, a na stronie pojawi się okno z aktualnym URL-em, nagłówkami i body. Możesz je dowolnie zmienić i wybrać:
- Wyślij ▸ — wysyła request z Twoimi zmianami (skrót: Ctrl/Cmd+Enter),
- Wyślij oryginał — wysyła bez zmian (skrót: Esc),
- Zablokuj — przerywa request.
Pola statyczne (query/nagłówki/body) w tej samej regule działają jako wartości domyślne pokazywane w oknie — możesz je nadpisać ręcznie za każdym razem. Gdy w jednym momencie leci kilka requestów, okna pojawiają się po kolei.
Uwaga: okno rysowane jest w kontekście strony (Shadow DOM), więc nie koliduje z jej stylami. Dla
XMLHttpRequestwysłanie jest odraczane do chwili Twojej decyzji — to normalne i nie psuje aplikacji.
W edytorze reguły rozwiń sekcję „Modyfikacja odpowiedzi (Response)". Możesz:
- Status HTTP — wymusić inny kod, np.
500, żeby przetestować obsługę błędów w aplikacji (response.okstanie sięfalse). - Body odpowiedzi — „Scal z JSON" dokłada/nadpisuje pola w odpowiedzi JSON, „Zastąp całość" podmienia treść 1:1.
- Nagłówki odpowiedzi — ustawić/usunąć (dla
fetch). - Edytuj odpowiedź przed przekazaniem — tryb interaktywny: po otrzymaniu
odpowiedzi wyskakuje okno, w którym ręcznie zmienisz status, nagłówki i body,
a dopiero potem aplikacja je zobaczy (tylko
fetch).
fetch— pełna obsługa: status, nagłówki, body oraz tryb interaktywny.XMLHttpRequest— statycznie status i body (odpowiedź podmieniana przez „cieniowanie" właściwościresponseText/response/status). Edycja interaktywna i nagłówki odpowiedzi dla XHR nie są obsługiwane.- Odpowiedzi typu opaque (żądania cross-origin
no-cors) są nieczytelne i nie da się ich modyfikować — przechodzą bez zmian. - Po podmianie
fetchbuduje nowy obiektResponse, więcresponse.urlmoże być pusty (ciało, status i nagłówki są zachowane). To zwykle nieistotne przy testach, ale warto wiedzieć.
Otwórz test.html (plik w tym folderze) w karcie, na której działa
rozszerzenie, i użyj przycisków, by wysłać przykładowe fetch/XHR. W konsoli
(DevTools → Network / Console) zobaczysz zmodyfikowany URL i body.