• Aplikacje webowe
  • Błąd 400 Bad Request - skąd się bierze i jak go naprawić?

Błąd 400 Bad Request - skąd się bierze i jak go naprawić?

Bruno Krawczyk • 4 listopada 2026
Trzy białe kafelki z cyframi 4, 0, 0 i napisem "bad request" na żółtym tle. Błąd 400.

Spis treści

Wysyłasz formularz albo otwierasz stronę, a zamiast treści widzisz „400 Bad Request”. Najczęściej serwer odrzuca wtedy żądanie jako nieprawidłowe, choć przyczyna może leżeć w zapisanym w przeglądarce pliku cookie, danych formularza albo konfiguracji aplikacji.

Strona nie działa, wystąpił błąd 400. Spróbuj ponownie załadować stronę.

Najpierw ustal, gdzie powstaje odpowiedź 400

  • Jedna strona: sprawdź jej pliki cookie i adres URL.
  • Własne API: odczytaj treść odpowiedzi i zweryfikuj format danych.
  • ASP.NET Core: atrybut [ApiController] może zwrócić 400 przed uruchomieniem metody kontrolera.
  • Wiele aplikacji za proxy: sprawdź logi serwera i bramy, bo kod mógł powstać przed dotarciem żądania do aplikacji.

400 opisuje odrzucone żądanie, a nie winę użytkownika

Na ekranie wszystko może wyglądać zwyczajnie: poprawny adres, działające logowanie, formularz bez widocznych błędów. Mimo to serwer uznaje, że nie może obsłużyć otrzymanego żądania. Kod 400 sam nie wskazuje, który jego element zawiódł.

RFC 9110 opisuje 400 jako odpowiedź dla żądania, którego serwer nie może lub nie chce przetworzyć z powodu problemu przypisanego stronie klienta, na przykład błędnej składni albo nieprawidłowego opakowania wiadomości. „Strona klienta” oznacza tu stronę wysyłającą żądanie, a może nią być przeglądarka, skrypt, aplikacja mobilna lub inne API. W interpretacji logów rozdzielam więc miejsce wykrycia błędu od osoby, która go spowodowała.

Przeglądarka może wysłać nieaktualne cookie, ale równie dobrze aplikacja może źle zbudować JSON albo pośredniczący serwer może odrzucić nagłówek. Ten sam numer nie oznacza zatem jednej uniwersalnej naprawy.

Podobne komunikaty mogą oznaczać inny problem niż 400

„Błąd żądania” brzmi jak ogólna etykieta, ale sąsiednie statusy HTTP pozwalają zawęzić diagnozę. Warto odczytać dokładny kod, zwłaszcza gdy komunikat pochodzi z API lub własnej aplikacji.

RFC 9110 rozróżnia między innymi 400, 413 i 422. W uproszczeniu: pierwszy dotyczy żądania uznanego za nieprawidłowe, drugi zbyt dużej treści, a trzeci poprawnie sformułowanej treści, której nie da się przetworzyć ze względu na jej znaczenie. Dla programisty ta różnica podpowiada, czy zacząć od składni i nagłówków, limitu rozmiaru, czy walidacji danych.

KodTypowy sygnałPierwszy kierunek sprawdzenia
400Żądanie lub jego część zostały odrzucone jako nieprawidłoweAdres, nagłówki, cookie, format i wymagane pola
413Treść żądania przekracza limitRozmiar wysyłanego pliku lub ograniczenia serwera
422Treść ma poprawną składnię, ale nie spełnia warunków przetworzeniaZnaczenie i spójność przekazanych danych

Nie każda aplikacja stosuje te kody w identyczny sposób, a brama sieciowa może zastąpić odpowiedź własną. Dlatego kod to wskazówka, a treść odpowiedzi i logi często mówią więcej.

Komunikat „Request Header Or Cookie Too Large” mocno zawęża trop: serwer odrzuca zbyt duży nagłówek, często zawierający cookie tej witryny. Powtarzające się zgłoszenia użytkowników dotyczą sytuacji, w której problem pojawia się na pojedynczej stronie lub po zalogowaniu, a usunięcie danych tej witryny pomaga. Nie trzeba od razu czyścić całej historii przeglądania.

  1. Otwórz stronę w oknie prywatnym. Jeśli tam działa, problem prawdopodobnie wiąże się z danymi zapisanymi dla zwykłej sesji.
  2. Usuń cookie i dane witryny, której dotyczy komunikat, a potem zaloguj się ponownie.
  3. Jeśli błąd pozostaje, sprawdź adres bez parametrów skopiowanych z długiego linku i spróbuj w innej przeglądarce.

Usunięcie cookie wyloguje z danej witryny i może skasować jej lokalne ustawienia. Gdy błąd występuje na wielu stronach albo w różnych przeglądarkach, szukaj przyczyny poza pojedynczym cookie, na przykład w rozszerzeniu, proxy lub aplikacji wysyłającej żądanie.

W ASP.NET Core 400 może pojawić się przed wejściem do kontrolera

Własne API może zwracać 400, choć metoda kontrolera nie została jeszcze wykonana. W ASP.NET Core atrybut [ApiController] uruchamia automatyczną odpowiedź 400, gdy wiązanie lub walidacja modelu zgłosi nieprawidłowy stan. Brak logu z wnętrza metody nie wyklucza więc błędu danych wejściowych.

Microsoft Learn opisuje ten mechanizm przez filtr ModelStateInvalidFilter; domyślna odpowiedź może zawierać szczegóły w formacie ValidationProblemDetails. Przykład: klient wysyła w polu liczbowym tekst „abc”. Konwersja nie powiedzie się, stan modelu będzie nieprawidłowy, a klient otrzyma 400, zanim kod akcji zacznie działać.

Przy takim wyniku porównaj JSON z typami i wymaganymi polami modelu, sprawdź nagłówek Content-Type oraz odczytaj odpowiedź walidacyjną. Jeśli komunikat zbyt ogólny, zaloguj identyfikator żądania i wynik walidacji, ale nie zapisuj haseł ani tokenów. Gdy kontroler nie dostaje żądania w ogóle, zajrzyj do logów serwera HTTP lub proxy.

Trzy pytania prowadzą od komunikatu do przyczyny

Najkrótsza droga do diagnozy zaczyna się od miejsca wystąpienia błędu. Zapisz dokładny komunikat i sprawdź, czy odpowiedź pojawia się na jednej stronie, w jednym wywołaniu API, czy w całej aplikacji.

SytuacjaPrawdopodobny tropCo zrobić
Błąd tylko na jednej witrynie, działa w oknie prywatnymCookie lub lokalne dane witrynyUsuń dane tej domeny i zaloguj się ponownie
API zwraca JSON z błędami pólNieudane wiązanie lub walidacja modeluPorównaj treść żądania z modelem i wymaganiami endpointu
Komunikat mówi o zbyt dużym nagłówkuCookie albo inne nagłówki przekraczają limitOgranicz dane wysyłane w nagłówkach; sprawdź konfigurację klienta i serwera
Własna metoda API nie rejestruje żądaniaOdrzucenie przez serwer HTTP, proxy lub filtr walidacjiSprawdź logi kolejnych warstw i identyfikator żądania

Jeżeli problem występuje u wielu osób i w różnych przeglądarkach, zgłoś go administratorowi witryny wraz z godziną, adresem endpointu i identyfikatorem żądania, jeśli jest widoczny. Nie przesyłaj publicznie cookie, tokenów ani pełnych nagłówków autoryzacyjnych. Sam status 400 nie wystarcza do diagnozy, ale dokładny komunikat i miejsce, w którym żądanie znika, zwykle pozwalają wskazać następny krok.

FAQ - Najczęstsze pytania

Otwórz stronę w oknie prywatnym. Jeśli tam działa, usuń cookie i dane tej witryny, a potem zaloguj się ponownie. Gdy to nie pomoże, sprawdź adres bez parametrów z długiego linku i spróbuj w innej przeglądarce.

Atrybut [ApiController] może automatycznie zwrócić 400, gdy wiązanie lub walidacja modelu wykryje nieprawidłowe dane. Na przykład tekst „abc” w polu liczbowym może spowodować błąd konwersji. Sprawdź format JSON, typy i wymagane pola oraz treść odpowiedzi walidacyjnej.

Serwer odrzuca nagłówek, który przekracza dozwolony rozmiar. Częstą przyczyną są cookie danej witryny, więc usuń jej zapisane dane i sprawdź, czy problem ustąpił. Jeśli błąd pozostaje, sprawdź też inne nagłówki oraz konfigurację klienta i serwera.

Kod 400 wskazuje, że żądanie lub jego część zostały uznane za nieprawidłowe. Kod 413 zwykle oznacza, że treść przekracza limit rozmiaru, a 422, że treść ma poprawną składnię, lecz nie spełnia warunków przetworzenia. Sprawdź treść odpowiedzi, bo aplikacje i bramy mogą stosować kody w różny sposób.

Oceń artykuł

Ocena: 0.00 Liczba głosów: 0

Tagi

błędy http
api
pliki cookie
proxy
walidacja modelu
Autor Bruno Krawczyk
Bruno Krawczyk
Mam na imię Bruno i od 8 lat zgłębiam tajniki programowania w ekosystemie .NET, chmury Azure oraz sztucznej inteligencji. Moja przygoda z technologią zaczęła się od ciekawości, jak złożone systemy mogą ułatwiać codzienne życie i rozwiązywać realne problemy. Dziś moją misją jest dzielenie się tą wiedzą, starając się przybliżyć nawet najbardziej skomplikowane zagadnienia w sposób zrozumiały i przystępny dla każdego. W moich artykułach na kursdotnet.pl skupiam się na praktycznych aspektach, analizuję najnowsze trendy i weryfikuję informacje, aby dostarczyć Wam treści, które są nie tylko dokładne i aktualne, ale przede wszystkim użyteczne w Waszej własnej ścieżce rozwoju technologicznego.

Udostępnij artykuł

Napisz komentarz