Czym jest surowe żądanie HTTP?

Surowe żądanie HTTP to reprezentacja wiadomości HTTP w postaci zwykłego tekstu, w takiej formie, w jakiej byłaby przesyłana przez sieć. Składa się z linii żądania (metoda, URL i wersja HTTP), po której następują pola nagłówków (pary klucz-wartość), pusta linia oraz opcjonalna treść. Na przykład proste żądanie GET wygląda jak GET /index.html HTTP/1.1, po którym następują nagłówki takie jak Host: example.com.

Rozumienie surowych żądań HTTP jest podstawą tworzenia aplikacji webowych, debugowania API oraz rozwiązywania problemów sieciowych. Narzędzia takie jak cURL, Wireshark czy narzędzia deweloperskie przeglądarki często wyświetlają żądania w surowym formacie. Umiejętność odczytywania i walidowania tych surowych wiadomości pomaga programistom diagnozować problemy, takie jak nieprawidłowo sformułowane nagłówki, błędne długości treści, brakujące nagłówki hosta czy niezgodności wersji protokołu.

Opis narzędzia

Walidator surowych żądań HTTP analizuje i weryfikuje surowe wiadomości żądań HTTP. Wklej kompletne surowe żądanie HTTP — zawierające linię żądania, nagłówki i opcjonalną treść — a narzędzie sprawdzi, czy jest ono zgodne z poprawną składnią HTTP. Jeśli żądanie jest prawidłowe, wyodrębnia i wyświetla kluczowe szczegóły, w tym metodę HTTP, URL, wersję HTTP, hosta, liczbę nagłówków oraz rozmiar treści w bajtach. Jeśli żądanie jest nieprawidłowe, narzędzie zgłasza konkretny błąd parsowania.

Funkcje

  • Pełne parsowanie żądania: Weryfikuje całą strukturę wiadomości HTTP, w tym linię żądania, nagłówki i treść
  • Szczegółowe wyodrębnianie pól: Wyświetla sparsowaną metodę, URL, wersję HTTP, nagłówek hosta, liczbę nagłówków oraz liczbę bajtów treści
  • Raportowanie błędów: Dostarcza szczegółowych komunikatów o błędach, gdy żądanie jest niekompletne lub nieprawidłowo sformułowane
  • Wstępnie wypełniony przykład: Zawiera przykładowe żądanie POST, dzięki czemu od razu widać oczekiwany format
  • Parsowanie zgodne ze standardami: Wykorzystuje bibliotekę http-parser-js, która implementuje tę samą logikę parsowania, co Node.js

Jak to działa

Narzędzie używa biblioteki http-parser-js — implementacji parsera HTTP w JavaScript, pierwotnie napisanego w C dla Node.js. Po wklejeniu surowego żądania parser przetwarza je bajt po bajcie — identyfikuje linię żądania, wyodrębnia każdą parę nagłówków, gromadzi treść i sprawdza kompletność wiadomości. Jeśli parser napotka błąd składniowy lub wiadomość jest niekompletna (brakuje końcowej pustej linii lub zadeklarowanej treści), zgłasza błąd. W przypadku powodzenia sparsowane komponenty są wyświetlane w ustrukturyzowanych polach wyjściowych.

Ograniczenia

  • Tylko HTTP/1.x: Parser obsługuje żądania HTTP/1.0 i HTTP/1.1. Ramki binarne HTTP/2 nie są obsługiwane
  • Tylko żądania: Narzędzie waliduje żądania HTTP, a nie odpowiedzi HTTP
  • Brak walidacji semantycznej: Parser sprawdza poprawność strukturalną, ale nie weryfikuje, czy konkretne wartości nagłówków są logicznie prawidłowe (np. czy Content-Type odpowiada rzeczywistemu formatowi treści)

Przypadki użycia

  • Debugowanie API: Waliduj surowe żądania przechwycone z logów, proxy lub dokumentacji przed wysłaniem ich do serwera
  • Nauka HTTP: Poznaj strukturę wiadomości HTTP, eksperymentując z różnymi metodami, nagłówkami i formatami treści
  • Analiza bezpieczeństwa: Sprawdzaj i waliduj podejrzane lub nietypowe żądania HTTP napotkane podczas testów penetracyjnych lub przeglądania logów