HTTP HEAD ответ - установите Content-Length - PullRequest
3 голосов
/ 21 августа 2009

Я пытаюсь создать метод HEAD для одной из наших служб, чтобы клиенты могли посмотреть тип и размер контента, прежде чем решить, загружать ли его.

Как установить длину контента длязаголовок ответа?Использование HttpContext предоставляет доступ к ContentType, Encoding и т. Д., Но я не могу указать длину, поскольку я предполагаю, что это значение обычно добавляется платформой при добавлении некоторого содержимого в ответ.

Есть ли другой способ сделать это илия неверно устанавливаю длину для HEAD-запроса - должен ли я на самом деле добавлять пользовательский заголовок для возврата размера ресурса?

1 Ответ

2 голосов
/ 21 августа 2009

Я думаю, Content-Length указывает размер тела ответа, а не размер ресурса. Таким образом, это не имеет смысла в контексте ответа HEAD.

Редактировать: В спецификации сказано:

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

Ответ на запрос HEAD МОЖЕТ быть кэшируемым в том смысле, что информация, содержащаяся в ответе, МОЖЕТ использоваться для обновления ранее кэшированного объекта из этого ресурса. Если новые значения поля указывают, что кэшированный объект отличается от текущего объекта (как было бы указано изменением Content-Length, Content-MD5, ETag или Last-Modified), то кэш ДОЛЖЕН рассматривать запись в кэше как устаревшую.

- http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.4

Это говорит о том, что мое приведенное выше утверждение неверно. Особенно последний абзац настоятельно рекомендует, чтобы заголовок мог иметь заголовок Content-Length.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...