Как вы правильно заметили, заголовок Accept используется HTTP-клиентами, чтобы сообщить серверу, какие типы контента они будут принимать. Затем сервер отправит обратно ответ, который будет включать заголовок Content-Type, сообщающий клиенту, какой тип содержимого на самом деле является возвращаемым содержимым.
Однако, как вы могли заметить, HTTP-запросы также могут содержать заголовки Content-Type. Почему? Хорошо, подумайте о запросах POST или PUT . С этими типами запросов клиент на самом деле отправляет пакет данных на сервер как часть запроса, а заголовок Content-Type сообщает серверу, что это за данные на самом деле (и, таким образом, определяет, как сервер их проанализирует).
В частности, для POST-запроса, полученного в результате отправки формы HTML, Content-Type запроса (обычно) будет одним из стандартных типов содержимого формы , указанных ниже, как указано в enctype
атрибуте <form>
тега:
application/x-www-form-urlencoded
(по умолчанию, более старый, более простой, немного меньше накладных расходов для небольших объемов простого текста ASCII, без поддержки загрузки файлов)
multipart/form-data
(новее, добавлена поддержка загрузки файлов, более эффективен для больших объемов двоичных данных или не-ASCII текста)