Błąd Content-Type sygnalizuje niezgodność zadeklarowanego formatu danych z ich rzeczywistą zawartością w żądaniu API.
Jak powstaje niezgodność Content-Type
Nagłówek Content-Type informuje odbiorcę żądania HTTP, jaki typ danych znajduje się w jego treści, czyli w tak zwanym body. Przykładowo wartość application/json oznacza, że serwer powinien próbować odczytać treść jako dokument JSON, a text/plain wskazuje na zwykły tekst. Błąd Content-Type pojawia się wtedy, gdy deklaracja w nagłówku nie odpowiada rzeczywistym danym albo gdy serwer nie obsługuje wskazanego typu.
Typowym przypadkiem jest wysłanie tekstu JSON z nagłówkiem text/plain, użycie formularza zakodowanego jako application/x-www-form-urlencoded przy oczekiwaniu serwera na JSON albo przesłanie pliku z pominięciem multipart/form-data. Niezgodność może powstać również przez ręczne ustawienie nagłówka w programie, który jednocześnie zmienia sposób kodowania danych. Sam napis Content-Type nie przekształca zawartości żądania — opisuje ją, dlatego nagłówek i body muszą być przygotowane jako spójna para.
Rola typu MIME, kodowania i granic formularza
Wartość Content-Type jest typem mediów, wcześniej często określanym jako typ MIME. Może zawierać parametr charset, na przykład text/plain; charset=UTF-8, który opisuje sposób interpretowania bajtów jako znaków. Parametr kodowania nie zmienia formatu strukturalnego danych. Dodanie charset=UTF-8 do treści JSON nie naprawi więc sytuacji, w której przesłano formularz albo uszkodzony dokument zamiast poprawnego JSON-a.
Osobnego traktowania wymaga wysyłanie plików i pól formularza. Dla multipart/form-data nagłówek powinien zawierać parametr boundary, czyli granicę rozdzielającą poszczególne części body. Wartość tę zwykle wyznacza biblioteka HTTP. Ręczne ustawienie samego Content-Type: multipart/form-data bez właściwej granicy może spowodować, że serwer nie rozpozna pól lub załącznika. Podobny problem występuje, gdy aplikacja deklaruje application/json, ale przesyła dane w formacie formularza.
Rozróżnienie Content-Type i Accept w odpowiedzi API
Content-Type opisuje format treści wysyłanej w danym żądaniu lub zwracanej w odpowiedzi. Nagłówek Accept pełni inną funkcję: wskazuje, jakie formaty odpowiedzi klient potrafi przyjąć. W żądaniu typu POST oba nagłówki mogą wystąpić jednocześnie. Przykładowo klient może wysłać JSON z Content-Type: application/json i oczekiwać odpowiedzi JSON przez Accept: application/json.
Nieprawidłowy Content-Type po stronie żądania często kończy się kodem HTTP 415 Unsupported Media Type, gdy serwer odrzuca nieobsługiwany typ danych. Jeśli typ jest obsługiwany, lecz sama treść nie daje się odczytać, serwer może zwrócić 400 Bad Request albo inny błąd walidacji. Z kolei problem z formatem odpowiedzi względem nagłówka Accept może prowadzić do kodu 406 Not Acceptable. Ostateczne zachowanie zależy od implementacji konkretnego API, dlatego diagnostyka powinna obejmować kod odpowiedzi, nagłówki oraz pełną treść komunikatu błędu.
Przy sprawdzaniu problemu należy porównać trzy elementy: deklarowany typ, sposób utworzenia body oraz dokumentację endpointu. Dla JSON-a warto zweryfikować, czy treść jest poprawnym JSON-em, czy nie zawiera dodatkowego tekstu przed obiektem oraz czy klient nie koduje jej drugi raz. Przy formularzu trzeba sprawdzić, czy biblioteka zastosowała właściwe kodowanie. Pomocne jest także zarejestrowanie żądania na poziomie klienta lub serwera, z zachowaniem ostrożności wobec haseł, tokenów i innych poufnych wartości.
Znaczenie błędu Content-Type w serwisowaniu komputera
Na laptopie lub komputerze stacjonarnym błąd Content-Type zwykle dotyczy aplikacji, przeglądarki, programu integrującego się z API albo lokalnej konfiguracji połączenia, a nie uszkodzenia podzespołu. Diagnostyka polega na odtworzeniu żądania, sprawdzeniu adresu usługi, metody HTTP, nagłówków i sposobu serializacji danych. Jeżeli ten sam endpoint działa z jednego programu, a odrzuca żądania z innego, porównuje się rzeczywiście wysyłane body oraz nagłówki, zamiast zakładać awarię serwera lub komputera.
Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i ich podzespołów, a w przypadku problemów z oprogramowaniem może ustalić, czy przyczyną jest konfiguracja klienta HTTP, błędna aktualizacja, uszkodzenie środowiska programu czy nieprawidłowe dane przekazywane do usługi. Prawidłowe rozpoznanie wymaga oddzielenia błędu protokołu HTTP od problemów z siecią, aplikacją i sprzętem.