从http://www.google.com/
收到原始回复时,Content-Length
标题丢失。而是在标题代码\r\n\r\n
结束之后但在实际内容之前放置接收的字节数。
我查看了原始回复,并8000
包含\r\n
作为行尾。
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
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轮。如果我应该在我的所有回复或仅来自谷歌的过程中解释这一点。
答案 0 :(得分:2)
您应该从所有回复中考虑到这种可能性,因为它很常见。没有关于这个&#34;特别&#34;这确实是完全合法的行为。
您假设的内容长度实际上是块大小,根据服务器响应的Chunked Transfer Encoding。
当遇到块大小为0时,响应完成,因此分块响应的有效内容长度等于块大小的总和。
自1999年以来,这已成为HTTP规范的一部分。