HTTP HEAD响应 - 设置Content-Length

时间:2009-08-21 13:17:40

标签: c# asp.net http-headers

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

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

是否有其他方法可以执行此操作,或者我是否设置HEAD请求的长度不正确 - 我是否应该添加自定义标头以返回资源的大小?

1 个答案:

答案 0 :(得分:2)

我认为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标题。