Назад | Перейти на главную страницу

Как я могу узнать, что ответ HTTP является ответом на запрос HEAD?

Допустим, я вижу ответ 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.