当前位置: 技术问答>linux和unix
如何确定php网页的返回长度?
来源: 互联网 发布时间:2015-06-24
本文导语: 我在写一个浏览器,目前遇到一个困难,就是php服务器的http报头,与纯文本html的包头有区别,以下是php服务器对于我get方法的返回 HTTP/1.0 200 OK Date: Thu, 01 Apr 2004 14:47:10 GMT Server: Apache/1.3.29 (Unix) Resin/1.2.8 PHP/4....
我在写一个浏览器,目前遇到一个困难,就是php服务器的http报头,与纯文本html的包头有区别,以下是php服务器对于我get方法的返回
HTTP/1.0 200 OK
Date: Thu, 01 Apr 2004 14:47:10 GMT
Server: Apache/1.3.29 (Unix) Resin/1.2.8 PHP/4.3.0
X-Powered-By: PHP/4.3.0
Content-Type: text/html
X-Cache: MISS from kachemsa.insa-rouen.fr
Proxy-Connection: close
.....
其中缺少了Content-Length 这一属性,我无法判断它的内容的长度,怎么办啊?
HTTP/1.0 200 OK
Date: Thu, 01 Apr 2004 14:47:10 GMT
Server: Apache/1.3.29 (Unix) Resin/1.2.8 PHP/4.3.0
X-Powered-By: PHP/4.3.0
Content-Type: text/html
X-Cache: MISS from kachemsa.insa-rouen.fr
Proxy-Connection: close
.....
其中缺少了Content-Length 这一属性,我无法判断它的内容的长度,怎么办啊?
|
头串的取法是一开始直到两个换行“rnrn",如:
HTTP/1.0 200 OKrn
Date: Thu, 01 Apr 2004 14:47:10 GMTrn
Server: Apache/1.3.29 (Unix) Resin/1.2.8 PHP/4.3.0rn
X-Powered-By: PHP/4.3.0rn
Content-Type: text/htmlrn
rn
rn
......
不会没有Content-Length吧?!
这个可是http一定需要的属性吧
HTTP/1.0 200 OKrn
Date: Thu, 01 Apr 2004 14:47:10 GMTrn
Server: Apache/1.3.29 (Unix) Resin/1.2.8 PHP/4.3.0rn
X-Powered-By: PHP/4.3.0rn
Content-Type: text/htmlrn
rn
rn
......
不会没有Content-Length吧?!
这个可是http一定需要的属性吧
|
你用mget去发个get包 看一下返回的包文
我感觉是服务器不能给出length
即使是apache 有时候有些html或者其他类型也无法返回length
这是因为服务器本身才解析你请求url时候的不到那个文件的length
自然就不会返回length
我感觉是服务器不能给出length
即使是apache 有时候有些html或者其他类型也无法返回length
这是因为服务器本身才解析你请求url时候的不到那个文件的length
自然就不会返回length
|
有时间你看一下abyss服务器的code就明白了
|
写浏览器应该没必要一定要知道内容长度啊,举个例子.
我写一个CGI,里面是
for(;;) printf("hehe
rn");
你说这个的长度APACHE能知道吗?
所以你的浏览器只能不断的读,读到EOF为止啦.
当然,资源分配还是有限度的,用动态分配试试
我写一个CGI,里面是
for(;;) printf("hehe
rn");
你说这个的长度APACHE能知道吗?
所以你的浏览器只能不断的读,读到EOF为止啦.
当然,资源分配还是有限度的,用动态分配试试
|
没有长度?!这个倒是真的没有遇到过!
但是我觉得这个与文件的大小是没有关系的,这个长度应该是WEB服务器解释后返回的HTML的长度!
楼上的说直到EOF?!好像没有这个东西吧,这可不是文件啊!是通过TCP来处理的,那又怎么知道已经接收完一个页面了呢?
但是我觉得这个与文件的大小是没有关系的,这个长度应该是WEB服务器解释后返回的HTML的长度!
楼上的说直到EOF?!好像没有这个东西吧,这可不是文件啊!是通过TCP来处理的,那又怎么知道已经接收完一个页面了呢?
|
没看到上面的语句吗?
他会无限的送出HEHE 2 字的,无限的话,怎么计算长度? 一直打开这个页面的
话,我的系统内存都用的差不多了
SOCKET在UNIX下也是文件句柄,说错了,不是EOF,是一直读
但这个已经是TCP层的问题了,和你HTTP头上返回长度没什么关系的拉
他会无限的送出HEHE 2 字的,无限的话,怎么计算长度? 一直打开这个页面的
话,我的系统内存都用的差不多了
SOCKET在UNIX下也是文件句柄,说错了,不是EOF,是一直读
但这个已经是TCP层的问题了,和你HTTP头上返回长度没什么关系的拉
|
不会阻塞吧,read读不到东西就说明是读完了,你就可以不用读了