2014-10-28 39 views
-1

当收到来自http://www.google.com/的原始响应时,缺少Content-Length标题。相反,要接收的字节数位于标题代码\r\n\r\n结束之后但在实际内容之前。HTTP响应:Google放错了内容长度

我查看了原始响应,并且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...` 

结束响应

所以(由 '\ r \ n \ r \ N' 表示)的完我的问题是谷歌为什么如此特别,他们可以搞砸我重新发明的HTTP轮。如果我在所有的回应中或仅仅从谷歌来解释这种情况。

+0

您可能会在进行指责之前做一些调查。具有讽刺意味的是,谷歌搜索“content-length missing”的第一个结果为答案提供了线索。另外,如果你“重新发明HTTP轮子”,你应该尽可能地学习标准的HTTP头(任何不以“X-”开头的东西);如果您对“Transfer-Encoding”标题感兴趣,那么您也可以通过这种方式找到答案。 – krait 2015-01-09 18:53:34

回答

2

你应该从所有回答中考虑这种可能性,因为它很常见。没有关于这是“特殊的”,这确实是完全合法的行为。

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

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

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

+0

谢谢你的启发 – Crispy 2015-06-24 04:35:37

相关问题