Допустим, я вижу ответ HTTP с его заголовком.
Как узнать, что это ответ на HEAD
запрос?
RFC 2616 заявляет, что если 200 OK
- это статус ответа, он должен содержать тело сообщения, только если это не ответ на HEAD
запрос. Поэтому мне нужно знать, является ли это ответом на HEAD.
Должен ли я сохранять состояние и помнить, является ли это ответом на HEAD
или это можно узнать только из полей ответа?
Спасибо.
Как сказано в RFC 2616, HTTP 1.1 не имеет состояния, поэтому вы можете выполнять работу без сохранения состояния (даже если это, вероятно, проще). Я не понимаю, почему вам нужно знать, есть ли тело или нет, вы можете просто прочитать данные и посмотреть, есть ли данные после заголовка или нет.
Чтобы увидеть, чем отличаются ответы, вы можете использовать telnet:
> telnet myserver 80
> GET / HTTP/1.0
> telnet myserver 80
> HEAD / HTTP/1.0
...но, как радиус прокомментировал, похоже, вы ответили на свой вопрос; если вы получаете в ответ код 200 без тела, предположите, что это ответ на запрос HEAD.