我在Fedora虚拟机中有一个本地testing环境。 奇怪的是,资源(CSS和JS文件)似乎并没有工作。 看着Firebug,我看到浏览器发送“Range bytes = 0-”的HTTP请求。 服务器以空的200OK或空的206 Partial Content响应。
这里是一个例子:
Response Headers Date Mon, 23 Nov 2009 23:33:26 GMT Server Apache/2.2.13 (Fedora) Last-Modified Thu, 19 Nov 2009 22:58:55 GMT Etag "18-3aec-478c14dbee138" Accept-Ranges bytes Content-Length 15084 Content-Range bytes 0-15083/15084 Connection close Content-Type text/css Request Headers Host fedora.test User-Agent Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.5) Gecko/20091105 Fedora/3.5.5-1.fc11 Firefox/3.5.5 Accept text/css,*/*;q=0.1 Accept-Language en-us,en;q=0.5 Accept-Encoding gzip,deflate Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive 300 Connection keep-alive Referer http://fedora.test/pictures/ Cookie __utma=26341546.1613992749.1258504422.1258569125.1258752550.4; __utmz=26341546.1258504422.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); PHPSESSID=tqf8jfmc77qihe97rl4tmhq685 Range bytes=0- If-Range "18-3aec-478c14dbee138"
我不知道如果浏览器发送错误的请求,或者如果它是这样做的服务器。 向外部请求(如谷歌分析)工作正常。
这是在VirtualBox的Fedora 11中运行的。 Apache的。 PHP。 这些文件是通过VirtualBox的“共享文件夹”function(可能是相关的?)提供的。
没有错误日志可以帮助我。
这表示您的服务器使用字节格式从客户端接受Range:标头。 范围用于“渐进式下载”,也称为“恢复下载”。 当你在Firefox中下载一个文件时,例如使用HTTP(不是FTP),点击“Pause”,然后点击“Resume”,Firefox将发送一个HTTP GET到服务器,并在请求中添加一个Range:标头。 该头部的值将向服务器指示启动数据stream的字节偏移量。
根据HTTP 1.1头域定义RFC ,这个头是可选的。 这意味着客户端仍然会尝试发送Range:头,但是如果服务器不支持这种请求,服务器将会忽略它。 所以我会禁用它,因为它只是增加了不必要的带宽使用到您的服务器。
有没有机会运行Apache / PHP的帐户无法访问“共享文件夹”中的文件? 从你的描述,这听起来像PHP没有问题,只是静态文件(所以apache呢?)…也许尝试创build一个PHP包装stream,他们?
if ($fp = fopen ($file_path, "r")) { while(!feof($fp)) { $file_buffer = fread($fp, 2048); echo $file_buffer; } fclose($fp); } else { die('LOGGED! bad file '.$file_path); }