Какой заголовок ответа должен получить метод HTTP HEAD для динамически сгенерированного файла?

В http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.4 говорится о запросе HEAD:

Метод HEAD идентичен GET, за исключением того, что сервер НЕ ДОЛЖЕН возвращать тело сообщения в ответе. Метаинформация, содержащаяся в заголовках HTTP в ответ на запрос HEAD, ДОЛЖНА быть идентична информации, отправленной в ответ на запрос GET.

И также:

Поле заголовка объекта Content-Length указывает размер тела объекта в десятичном числе октетов, отправленного получателю, или, в случае метода HEAD, размер тела объекта, который был бы отправлен получателю. запрос был GET.

Таким образом, если запрошенный ресурс генерируется динамически, для запроса HEAD будет ли создаваться ресурс ТАКЖЕ? Должен ли быть заголовок Content-Length или заголовок Transfer-Encoding: chunked?

(Я чувствую, что это о том, как реализовать протокол HTTP.)

ДОБАВИТЬ 1

Я не вижу, чтобы спецификация предписывала whether to отправлять заголовок Content-Length или how to отправлять его для динамически генерируемого ресурса. Такой динамический ресурс будет отправлен с кодировкой передачи по частям, и не будет заголовка Content-Length при доступе с помощью метода GET. Таким образом, если ответ HEAD должен имитировать ответ GET, Contnet-Length также не должен отправляться.


person smwikipedia    schedule 24.06.2016    source источник


Ответы (1)


а) Это не спецификация HTTP. Это копия W3C устаревшего RFC 2616 от 1999 года.

б) Актуальную спецификацию см. на странице https://greenbytes.de/tech/webdav/rfc7231.html#HEAD

Чтобы ответить на ваш вопрос: если вы не знаете размер полезной нагрузки, фактически не создавая ее, не отправляя Content-Length в ответе HEAD, это нормально.

person Julian Reschke    schedule 24.06.2016