【问题标题】:HTTP HEAD response - set Content-LengthHTTP HEAD 响应 - 设置 Content-Length
【发布时间】:2009-08-21 13:17:39
【问题描述】:

我正在尝试为我们的一项服务构建 HEAD 方法,以便客户可以在决定是否下载之前查看内容类型和大小。

如何设置响应头的内容长度?使用 HttpContext 会公开 ContentType、Encoding 等,但我无法指定长度,因为我认为该值通常是由框架在将某些内容添加到响应时添加的。

是否有另一种方法可以做到这一点,或者我为 HEAD 请求设置长度是否不正确 - 我是否应该添加自定义标头以返回资源的大小?

【问题讨论】:

    标签: c# asp.net http-headers


    【解决方案1】:

    我认为Content-Length 指定了响应正文的大小,而不是资源的大小。因此,它在 HEAD 响应的上下文中没有意义。

    编辑:规范说:

    HEAD 方法与 GET 相同,只是服务器不能在响应中返回消息体。响应 HEAD 请求的 HTTP 标头中包含的元信息应该与响应 GET 请求发送的信息相同。此方法可用于获取有关请求所隐含的实体的元信息,而无需传输实体主体本身。这种方法通常用于测试超文本链接的有效性、可访问性和最近的修改。

    对 HEAD 请求的响应可能是可缓存的,因为响应中包含的信息可以用于从该资源更新先前缓存的实体。如果新字段值表明缓存的实体与当前实体不同(如 Content-Length、Content-MD5、ETag 或 Last-Modified 的变化所表明的那样),则缓存必须将缓存条目视为陈旧的。

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

    这表明我的上述说法是错误的。尤其是后一段强烈建议 HEAD 可以有一个 Content-Length 标头。

    【讨论】:

    • 谢谢 - mu 阅读它的标题是相同的,所以我希望将长度设置为将在 GET 上返回的大小。在大多数情况下,您会检查标头以确定资源是否已更改。在我们的例子中,我们希望让人们可以根据大小选择是否下载。
    • 我相信这是正确的解释。这并不能保证所有参与者都会以这种方式实际实现它......
    猜你喜欢
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    相关资源
    最近更新 更多