我正在尝试为我们的某个服务构建一个HEAD方法,以便客户可以在决定是否下载之前查看内容类型和大小。
如何设置响应标头的内容长度?使用HttpContext公开了ContentType,Encoding等,但是我无法指定长度,因为我假设在将某些内容添加到响应中时,框架通常会添加此值。
是否有其他方法可以执行此操作,或者我是否设置HEAD请求的长度不正确 - 我是否应该添加自定义标头以返回资源的大小?
答案 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
标题。