关于HEAD请求,http spec会说:
HEAD方法与GET相同,只是服务器不能在响应中返回消息体。响应HEAD请求的HTTP标头中包含的元信息应与响应GET请求时发送的信息相同。
对HEAD请求的响应是否应该包含Content-Length标头?即使没有响应体,它也应该是在GET请求中返回的值吗?或者Content-Length应该是0?
发布于 2013-09-21 04:56:21
对我来说,HTTP 1.1 RFC看起来很具体:
Content-Length entity-header字段指示发送给收件人的entity-body的大小(以八位字节的十进制数表示),或者在HEAD方法中为,表示如果请求是GET,则将发送的entity-body的大小。
发布于 2010-10-04 19:57:06
Section 14.13 of the HTTP/1.1规范详细说明了Content-Length报头,并表示:
应用程序应该使用此字段来指示消息体的传输长度,除非第4.4节中的规则禁止这样做。
单词‘very specific meaning in RFCs’有一个very specific meaning in RFCs
因此,您可能不会总是看到内容长度。通常,对于动态生成的任何内容,您可能看不到它,因为为探索性HEAD请求提供服务的成本可能太高。例如,向Apache发出的对静态文件的HEAD请求将具有内容长度,但对PHP脚本的请求可能没有。
例如,试试这个网站...
telnet stackoverflow.com 80
HEAD / HTTP/1.0
Host:stackoverflow.com
HTTP/1.1 200 OK
Date: Mon, 11 Jan 2016 10:58:25 GMT
Content-Type: text/html; charset=utf-8
Connection: close
Set-Cookie: __cfduid=c2eb4742a1e02d89cab0402220736c0bd1452509905; expires=Tue, 10-Jan-17 10:58:25 GMT; path=/; domain=.stackoverflow.com; HttpOnly
Cache-Control: public, no-cache="Set-Cookie", max-age=36
Expires: Mon, 11 Jan 2016 10:59:02 GMT
Last-Modified: Mon, 11 Jan 2016 10:58:02 GMT
Vary: *
X-Frame-Options: SAMEORIGIN
X-Request-Guid: 487e80bc-3783-4cfd-d883-a3bc84253234
Set-Cookie: prov=8dc24306-c067-45eb-bf5d-cffa855c2b03; domain=.stackoverflow.com; expires=Fri, 01-Jan-2055 00:00:00 GMT; path=/; HttpOnly
Server: cloudflare-nginx
CF-RAY: 26303c15f8e035a2-LHR那里没有content-length。
发布于 2010-10-04 19:39:41
是的,HEAD响应的Content-Length应该是的,但并不总是(参见@Paul's answer)包含GET响应的Content-Length值:
堆栈溢出执行以下操作:
> telnet stackoverflow.com 80
HEAD / HTTP/1.1
Host: stackoverflow.com
HTTP/1.1 200 OK
Cache-Control: public, max-age=60
Content-Length: 362245 <--------
Content-Type: text/html; charset=utf-8
Expires: Mon, 04 Oct 2010 11:51:49 GMT
Last-Modified: Mon, 04 Oct 2010 11:50:49 GMT
Vary: *
Date: Mon, 04 Oct 2010 11:50:49 GMT谷歌没有:
> telnet www.google.com 80
HEAD / HTTP/1.1
Host: www.google.ie
HTTP/1.1 200 OK
Date: Mon, 04 Oct 2010 11:55:36 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Server: gws
X-XSS-Protection: 1; mode=block
Transfer-Encoding: chunkedhttps://stackoverflow.com/questions/3854842
复制相似问题