Хотя это явно не указано в спецификации, можно сделать некоторые выводы. Раздел 7.2.1 Состояния
Любое сообщение HTTP / 1.1, содержащее
Сущность-тело ДОЛЖНА включать
Поле заголовка Content-Type, определяющее
тип носителя этого тела.
Это довольно очевидно и имеет смысл. Учитывая это, мы можем взглянуть на Раздел 9 (Определения методов), чтобы увидеть, какие из них упоминают, что они могут иметь сущность в теле запроса. Три из них упоминают это:
OPTIONS
Если запрос OPTIONS включает
сущность-тело (как указано
наличие Content-Length или
Transfer-Encoding) ...
POST
... используется для запроса источника
сервер принимает сущность, заключенную в
запрос ...
PUT
... запрашивает вложенную сущность
храниться под поставляемым
Request-URI
И один метод специально запрещает сущности, TRACE :
Запрос TRACE НЕ ДОЛЖЕН включать
юридическое лицо.
В действительности вы можете отправить любой метод (кроме TRACE) с сущностью в теле и заголовком Content-Type. Однако, согласно спецификации, я бы не ожидал, что сервер что-то с ним сделает, если только это не будет один из трех описанных выше методов.
<Ч />
Я бы также сказал, что используемое вами программное обеспечение, которое отвечает HTTP Status 415, нарушает спецификацию.
Раздел 4.3 говорит:
... если метод запроса не
включить определенную семантику для
тело объекта, затем тело сообщения
СЛЕДУЕТ игнорировать при обращении с
запрос.
Поскольку спецификация не включает определенную семантику для тела сущности с GET-запросом, сервер должен игнорировать это.
Кроме того, если в запросе не было предоставлено ни одного объекта, а Content-Length равен нулю (при условии, что заголовок Transfer-Encoding не установлен и не является «идентичностью»), сервер не должен пытаться использовать объект независимо от метода запроса или есть ли заголовок Content-Type или нет. Это можно сделать в порядке приоритета для определения длины сообщения, описанного в Раздел 4.4 .