首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Content-Length header with HEAD请求?

Content-Length header with HEAD请求?
EN

Stack Overflow用户
提问于 2010-10-04 19:35:13
回答 5查看 46.3K关注 0票数 69

关于HEAD请求,http spec会说:

HEAD方法与GET相同,只是服务器不能在响应中返回消息体。响应HEAD请求的HTTP标头中包含的元信息应与响应GET请求时发送的信息相同。

HEAD请求的响应是否应该包含Content-Length标头?即使没有响应体,它也应该是在GET请求中返回的值吗?或者Content-Length应该是0?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-09-21 04:56:21

对我来说,HTTP 1.1 RFC看起来很具体:

Content-Length entity-header字段指示发送给收件人的entity-body的大小(以八位字节的十进制数表示),或者在HEAD方法中为,表示如果请求是GET,则将发送的entity-body的大小。

票数 51
EN

Stack Overflow用户

发布于 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

  1. 这个词,或形容词“推荐”,意思是在特定情况下可能存在合理的理由忽略某一特定项目,但在选择不同的路线之前,必须理解并仔细权衡其全部含义。

因此,您可能不会总是看到内容长度。通常,对于动态生成的任何内容,您可能看不到它,因为为探索性HEAD请求提供服务的成本可能太高。例如,向Apache发出的对静态文件的HEAD请求将具有内容长度,但对PHP脚本的请求可能没有。

例如,试试这个网站...

代码语言:javascript
复制
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。

票数 46
EN

Stack Overflow用户

发布于 2010-10-04 19:39:41

是的,HEAD响应Content-Length应该是的,但并不总是(参见@Paul's answer)包含GET响应的Content-Length值:

堆栈溢出执行以下操作:

代码语言:javascript
复制
> 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

谷歌没有:

代码语言:javascript
复制
> 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: chunked
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3854842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档