Является ли Content-Type обязательным для HTTP-запроса?

Поле:

Content-Type

Обязательно, когда я выполняю HTTP-запрос?

Ответы

Ответ 1

Нет, это не обязательно. По спецификации HTTP 1.1:

Любое сообщение HTTP/1.1, содержащее тело-сущность, ДОЛЖНО включать поле заголовка Content-Type, определяющее тип носителя этого тела. Если и только если тип материала не задан поле Content-Type, получатель МОЖЕТ попытаться угадать тип носителя путем проверки его содержимого и/или расширений имен URI, используемых для идентификации ресурса. Если тип носителя остается неизвестным, получатель ДОЛЖЕН рассматривать его как тип "приложение/октет-поток".

Тем не менее, очевидно, что серверу будет сложно точно интерпретировать передаваемые вами данные, если вы опустите заголовок Content-Type, поэтому не рекомендуется делать это.

Ответ 2

Из RFC2616

Любое сообщение HTTP/1.1, содержащее тело субъекта, СЛЕДУЕТ включать Поле заголовка Content-Type, определяющее тип носителя этого тела. Если и только если тип носителя не задан поле Content-Type, получатель МОЖЕТ попытаться угадать тип носителя путем проверки его контента и/или расширений (имен) имени URI, используемых для идентификации ресурс. Если тип носителя остается неизвестным, получатель ДОЛЖЕН рассматривайте его как тип "application/octet-stream".

Так что рекомендуется делать, а не обязательно. Но получатель может угадать тип содержимого, если он не указан.