Nieprawidłowe Content-Type to deklaracja formatu niezgodna z faktyczną zawartością żądania lub wiadomości.
Jak działa nagłówek Content-Type w komunikacji HTTP
Nagłówek Content-Type określa typ danych umieszczonych w treści żądania HTTP albo odpowiedzi HTTP. Informuje odbiorcę, jak należy interpretować przesłane bajty. Przykładowo wartość text/plain oznacza zwykły tekst, text/html dokument HTML, application/json dane zapisane w formacie JSON, a image/png obraz PNG. Parametr charset=UTF-8 może dodatkowo wskazywać kodowanie znaków dla treści tekstowej, na przykład text/plain; charset=UTF-8.
Nieprawidłowe Content-Type występuje wtedy, gdy zadeklarowana wartość nie odpowiada rzeczywistej zawartości wiadomości. Jeżeli klient wysyła dokument JSON, ale ustawia Content-Type: text/plain, serwer może potraktować dane jako zwykły tekst i nie uruchomić parsera JSON. Odwrotna sytuacja również powoduje problemy: treść niebędąca poprawnym JSON-em przesłana z nagłówkiem application/json może zakończyć się błędem analizy składni. Sam nagłówek nie zmienia danych i nie konwertuje ich do wskazanego formatu.
Różnica między Content-Type a Accept
W żądaniu HTTP nagłówek Content-Type opisuje przede wszystkim dane wysyłane przez klienta w treści żądania. Ma znaczenie między innymi przy metodach POST, PUT i PATCH. Serwer wykorzystuje tę informację do wyboru właściwego sposobu odczytu danych. Dla formularza wysyłanego kodowaniem URL wartość może wynosić application/x-www-form-urlencoded, a dla formularza z plikami zazwyczaj multipart/form-data z parametrem boundary, który rozdziela poszczególne części wiadomości.
Nagłówek Accept pełni inną funkcję: wskazuje format odpowiedzi akceptowany przez klienta. Klient może więc wysłać JSON z Content-Type: application/json i jednocześnie zażądać odpowiedzi JSON przez Accept: application/json. Błędna konfiguracja jednego nagłówka nie jest automatycznie naprawiana przez drugi. Serwer może zwrócić kod 415 Unsupported Media Type, gdy nie obsługuje typu danych przesłanego w żądaniu, albo 406 Not Acceptable, gdy nie potrafi wygenerować formatu wymaganego przez nagłówek Accept.
Typowe objawy niezgodnego typu danych
Skutki błędnego Content-Type zależą od używanego klienta, serwera i biblioteki programistycznej. Aplikacja może zgłosić błąd parsowania, odrzucić żądanie kodem 400 lub 415, odczytać treść jako pustą albo zapisać ją w niewłaściwy sposób. Przy transmisji formularza problem często polega na tym, że serwer oczekuje pól formularza, lecz otrzymuje surowy JSON. Przy przesyłaniu pliku serwer może nie znaleźć części oznaczonej nazwą pola, jeżeli klient wysłał dane jako pojedynczy strumień zamiast komunikatu multipart/form-data.
Diagnostyka powinna obejmować jednoczesne sprawdzenie nagłówków i rzeczywistej treści wiadomości. W narzędziach deweloperskich przeglądarki można otworzyć żądanie w zakładce sieciowej i porównać nagłówek Content-Type z przesłanym ładunkiem. W systemach Linux lub macOS przydatne jest polecenie curl -i, które pokazuje nagłówki odpowiedzi, natomiast podczas testowania żądania można jawnie ustawić nagłówek, na przykład curl -H "Content-Type: application/json" --data '{"status":"ok"}' https://example.com/api. Należy pamiętać, że poprawność przykładu zależy także od wymagań konkretnego punktu API.
Naprawa konfiguracji nagłówka w aplikacji i przeglądarce
Usunięcie problemu polega na dopasowaniu deklarowanego typu do faktycznego sposobu serializacji danych. Jeżeli kod tworzy JSON, powinien najpierw przekształcić obiekt do tekstu JSON, a następnie wysłać go z wartością application/json. Jeżeli używany jest obiekt formularza zawierający pliki, klient powinien przekazać go jako FormData. W takim przypadku przeglądarka zazwyczaj sama ustawia pełną wartość multipart/form-data wraz z parametrem boundary; ręczne wpisanie samego nagłówka może uszkodzić strukturę komunikatu, ponieważ granica części nie będzie odpowiadała treści.
W odpowiedziach serwera również trzeba zweryfikować zgodność nagłówka z generowanym dokumentem. Dokument HTML powinien być zwracany jako text/html, arkusz stylów jako text/css, a plik JavaScript zgodnie z typem obsługiwanym przez daną konfigurację serwera i przeglądarkę. Błędny typ może skutkować wyświetleniem tekstu zamiast obrazu, nieuruchomieniem skryptu albo błędnym kodowaniem polskich znaków. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów i komputerów PC, w tym diagnozowaniem problemów z przeglądarkami, aplikacjami oraz konfiguracją oprogramowania odpowiedzialnego za komunikację sieciową.