Является ли 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".
Так что рекомендуется делать, а не обязательно. Но получатель может угадать тип содержимого, если он не указан.