Błąd internetu

Błąd ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_LENGTH – przyczyny i naprawa

Mateusz Sobociński
Autor: Mateusz Sobociński - CEO & Red. Nacz. @ asMAX
5 min. czytania

Błąd ERRRESPONSEHEADERSMULTIPLECONTENT_LENGTH oznacza, że serwer HTTP zwraca więcej niż jeden nagłówek Content-Length w odpowiedzi, co jest niezgodne z protokołem HTTP i prowadzi do odrzucenia odpowiedzi przez przeglądarkę lub inne klienty ze względów bezpieczeństwa. To może powodować problemy z ładowaniem stron oraz aplikacji webowych. Poniżej znajdziesz wyjaśnienie przyczyn oraz szczegółowe instrukcje naprawy – zarówno dla webmasterów, deweloperów, jak i użytkowników końcowych.

Co to jest nagłówek Content-Length?

  • Content-Length – określa dokładny rozmiar (w bajtach) treści odpowiedzi HTTP.
  • Jego obecność jest kluczowa, by klient (np. przeglądarka) wiedział, ile danych powinien pobrać i poprawnie zakończyć odbiór treści.

Przyczyny błędu ERRRESPONSEHEADERSMULTIPLECONTENT_LENGTH

  • Błędna konfiguracja serwera lub proxy – Najczęściej serwer (np. Apache, nginx, IIS) lub pośredniczący proxy dokłada dodatkowy nagłówek Content-Length, powodując powielenie.
  • Nakładanie się nagłówków przez oprogramowanie – Aplikacje webowe, frameworki, pluginy lub biblioteki mogą samodzielnie ustawiać Content-Length, co prowadzi do kolizji z nagłówkiem generowanym przez serwer.
  • Interakcje z Transfer-Encoding – Jednoczesne wysyłanie nagłówków Content-Length i Transfer-Encoding powoduje konflikt zgodnie z RFC 9112.
  • Błędy w reverse proxy – Proxy może nadpisywać lub duplikować nagłówki przy przekazywaniu odpowiedzi pomiędzy serwerami.
  • Problemy programistyczne – Źle napisany kod backendu może niepoprawnie dodawać lub nie usuwać starych nagłówków Content-Length.
  • Konfiguracja środowisk testowych i deweloperskich – Podczas testowania API zdarza się wstawianie nagłówków przez różne narzędzia (np. Postman, narzędzia debugujące), powodując konflikt.

Skutki błędu

  • Blokada odpowiedzi przez przeglądarki i API – Nowoczesne przeglądarki (Chrome, Edge, Firefox) i narzędzia deweloperskie uznają obecność wielu nagłówków Content-Length za fatalny błąd bezpieczeństwa i nie przetwarzają odpowiedzi.
  • Narażenie na ataki – Wielokrotne nagłówki Content-Length mogą umożliwić ataki takie jak HTTP response splitting lub request smuggling.
  • Brak ładowania strony/aplikacji – Użytkownik widzi komunikaty o błędzie lub strona nie ładuje się poprawnie.

Instrukcja naprawy (Webmaster/Web Developer)

1. Analiza i identyfikacja problemu

  • Sprawdź odpowiedź HTTP – Użyj narzędzi takich jak Chrome DevTools, Wireshark, curl, Postman – przeanalizuj nagłówki odpowiedzi.
curl -I https://twojastrona.pl 

Upewnij się, czy występuje:

Content-Length: 1234 Content-Length: 5678 

lub nagłówki o różnych wartościach.

2. Konfiguracja serwera WWW

Apache:

  • Sprawdź pliki .htaccess oraz konfigurację VirtualHost pod kątem ręcznego ustawiania nagłówków (Header set Content-Length ...).
  • Usuń niepotrzebne dyrektywy dodające Content-Length.

nginx:

  • Sprawdź konfigurację (np. blok location lub dodatkowe moduły) – nginx sam wylicza Content-Length dla statycznych plików, nie powinien być ustawiany ręcznie.
  • Usuń linie typu: add_header Content-Length ....

IIS:

  • Sprawdź Web.config i wszelkie customowe nagłówki.
  • Usuń powielania nagłówków.

3. Reverse Proxy i Load Balancer

  • Zweryfikuj, czy proxy (np. HAProxy, Varnish, F5) nie dodaje powtórnych nagłówków Content-Length.
  • Skonfiguruj proxy, by przekazywało nagłówki bez duplikowania.

4. Aplikacja / Backend

  • Sprawdź kod aplikacji, frameworku, bibliotek – upewnij się, że nie ustawiają ręcznie nagłówka, jeśli robi to serwer.
  • Przykład w PHP (usunąć):
header("Content-Length: ..."); 
  • W Node.js: nie ustawiaj res.setHeader('Content-Length', ...) jeśli korzystasz z mechanizmu strumieniowania/chunked.

5. Weryfikacja Transfer-Encoding

  • Nigdy nie używaj jednocześnie nagłówków Content-Length i Transfer-Encoding: chunked – to powoduje konflikt.
  • Jeśli przesyłasz dane strumieniowo, używaj tylko Transfer-Encoding: chunked.

6. Po dokonaniu zmian

  • Zrestartuj serwer/proxy po zmianach w konfiguracji.
  • Przetestuj odpowiedź HTTP – powinien występować tylko jeden nagłówek Content-Length lub wyłącznie Transfer-Encoding.

Instrukcja dla użytkownika końcowego

  • Zgłoś problem administratorowi strony – problem jest po stronie konfiguracji serwera lub aplikacji.
  • Wyczyść cache przeglądarki – w rzadkich przypadkach może pomóc ponowne załadowanie strony.
  • Spróbuj innej przeglądarki lub urządzenia – ale problem prawie zawsze wymaga poprawy przez admina/dewelopera.
  • Unikaj wprowadzania danych na stronach z tym błędem – ryzyko bezpieczeństwa.

Dodatkowe wyjaśnienia techniczne

  • HTTP Standard – Zgodnie z RFC 9112, klient MUSI odrzucić odpowiedź, jeśli występują różne wartości w powielanych nagłówkach Content-Length.
  • Bezpieczeństwo – Powielony Content-Length to technika wykorzystywana w atakach na infrastrukturę webową.

Podsumowanie – najważniejsze działania naprawcze

  • Usuń powielanie nagłówka Content-Length w kodzie i konfiguracji.
  • Nigdy nie łącz Content-Length z Transfer-Encoding: chunked.
  • Zawsze testuj odpowiedź po każdej zmianie, wykorzystując narzędzia developerskie i curl.
  • Informuj użytkowników, że błąd leży po stronie serwera, a oni sami nie mogą go naprawić.

Błąd ERRRESPONSEHEADERSMULTIPLECONTENT_LENGTH zawsze wymaga interwencji administratora lub developera, bo wynika z nieprawidłowej obsługi nagłówków HTTP na serwerze lub w aplikacji.

Podziel się artykułem
CEO & Red. Nacz. @ asMAX
Obserwuj:
Ex-redaktor w GW (Technologie) i ex-PR w koreańskim start-upie technologicznym. Absolwent Imperial College Business School (MBA) i Politechniki Warszawskiej. Od 2025 CEO i redaktor naczelny w asMAX.
Brak komentarzy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *