2011-04-08 18 views
2

CGI,PHP,ASP,SSI等动态页面是否始终在HTTP头中包含内容长度字段。如果不是为什么?请提供指向服务器上的网页的链接,这些服务器在标题中不包含Content-Length字段。我想亲眼看到它。动态网页是否始终包含HTTP标头中的内容长度字段?

+2

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13以及http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4 0.4。不完全确定所有语言是否遵守这些规则,尽管它可以让你很好地了解它何时会被排除在外 – 2011-04-08 16:52:30

+0

@ TBohnen.jnr:因此,即使服务器不提供内容长度,仍然可以进行所有传输 - 客户知道它是否已收到完整请求的编码? – Bruce 2011-04-09 13:01:59

+1

我不能肯定地说是,但我认为在大多数情况下这样做是安全的。我在过去使用php和asp.net web服务遇到了问题,其中头部的内容长度和实际内容长度不匹配,但这是一个不同的故事:-) – 2011-04-10 09:59:57

回答

4

每RFC 2616:

在HTTP中,每当 消息的长度可以被确定被转移 之前它应该被发送,

这是通常的情况是长度不能事先确定。如果您想查看标题,请尝试curl -I http://www.example.com。你会很快看到一些网站和一些网站没有。

+0

应该在RFC中意味着一件特别的事情。如果你以前没有阅读过RFC,花点时间阅读顶部的位置,他们解释了should/must/etc之间的区别 – 2011-04-08 18:15:32

1

我认为页面不需要总是发送它们的内容长度。

从浏览器端,如果浏览器知道内容长度可以显示加载栏,或者只是等待看到“文件结尾”。如果发送文件最好发送内容长度,否则用户看不到此加载栏,并且无法确定文件是否已完全加载。但是,如果你只有一个页面,浏览器会加载直到结束。

原因是有些页面可以在客户端发送数据时创建它们的内容。这种方式用户无需等待太多时间才能看到第一批数据。

Dogs页是一个例子。此外,由于相同的原因,亚马逊没有在大多数页面上发送内容长度。

页面查找第一项后刷新数据,然后是刷新数据的时间,这样用户不需要花时间等待程序先找到它们全部,然后计算页面的大小,然后开始发送数据。

相关问题