HTTP响应:Google错放了内容长度

时间:2014-10-28 18:54:22

标签: http httpresponse http-response-codes

http://www.google.com/收到原始回复时,Content-Length标题丢失。而是在标题代码\r\n\r\n结束之后但在实际内容之前放置接收的字节数。

我查看了原始回复,并8000包含\r\n作为行尾。

部分Google响应

标题

HTTP/1.1 200 OK
Date: Tue, 28 Oct 2014 18:38:37 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: ...
Set-Cookie: ...
P3P: ...
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Alternate-Protocol: 80:quic,p=0.01
Transfer-Encoding: chunked

标题结束(由' \ r \ n \ r \ n \ n \ n'表示)

8000     # has '\r\n', I am assuming this is the content-length?

<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en"><head><meta content...`

结束回复

所以我的问题是为什么谷歌如此特别,他们可以搞砸我重新发明的HTTP轮。如果我应该在我的所有回复或仅来自谷歌的过程中解释这一点。

1 个答案:

答案 0 :(得分:2)

您应该从所有回复中考虑到这种可能性,因为它很常见。没有关于这个&#34;特别&#34;这确实是完全合法的行为。

您假设的内容长度实际上是块大小,根据服务器响应的Chunked Transfer Encoding

当遇到块大小为0时,响应完成,因此分块响应的有效内容长度等于块大小的总和。

自1999年以来,这已成为HTTP规范的一部分。