Chrome加载了一个text / html文件,但显示状态为“failed”且未在屏幕上呈现

时间:2012-09-17 09:17:02

标签: google-chrome browser doctrine http-status-codes developer-tools

Google Chrome仍面临一个奇怪的问题。我有一个从PHP源代码生成的text / html页面。此页面加载良好,并在任何流行的浏览器上显示,但Chrome。刚刚保存源代码后,Chrome会以正确的方式加载和呈现文件。即使我只是添加或删除了空格字符。接下来,如果我尝试刷新页面,Chrome会显示一个空白页面,并在“开发者工具”面板中显示错误(请参见屏幕截图),指示“失败”状态。但是,如果我检查HTTP响应头,一切似乎都没问题,包括HTTP状态:200 OK。

HTTP/1.1 200 OK
Date: Mon, 17 Sep 2012 08:37:03 GMT
Server: Apache/2.2.3 (CentOS)
X-Powered-By: PHP/5.3.14
Expires: Mon, 17 Sep 2012 08:52:03 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

Bellow是保存源并获得正确渲染后的HTTP响应标头。没有变化(时间相关信息除外)

HTTP/1.1 200 OK
Date: Mon, 17 Sep 2012 08:56:06 GMT
Server: Apache/2.2.3 (CentOS)
X-Powered-By: PHP/5.3.14
Expires: Mon, 17 Sep 2012 09:11:07 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

我还检查了HTTP请求标头,它们在两种情况下都是相同的:

工作案例:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Cookie:PHPSESSID=qn01olb0lkgh3qh7tpmjbdbct1
Host:(hidden here, but correct, looks like subsubdomain.subdomain.domain.tld)
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1

案件失败:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Cookie:PHPSESSID=qn01olb0lkgh3qh7tpmjbdbct1
Host:(also hidden)
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1

我注意到即使页面失败,也会从本地缓存中成功加载或检索其他一些资源(javascript,样式表)。我也可以每次成功访问HTML源代码,是否可以呈现页面(HTML代码是预期包含的内容)。

我还运行了Wireshark,以便在传输数据时看看是否会出现问题,但是这一切似乎也没问题。

我在Google上阅读了有关内容长度的内容,如果HTTP标头中提供的信息与提供的文件的有效大小不同,则会导致Chrome失败。在我看来并不是这样,因为没有提供内容长度。

欢迎任何帮助!谢谢!

1 个答案:

答案 0 :(得分:2)

对于仍然遇到此问题的人: 加     setEnv downgrade-1.0 到你的.htaccess,对我来说它可以作为临时修复。它会禁用分块传输。

另一种解决方案是将用户代理设置为IE,显然它也是如此......

实际问题与服务器配置有某种关系,我也看到了分段错误错误。 我遇到此行为的站点在PHP 5.3.27上通过HTTPS运行。

编辑:无论是通过HTTPS还是HTTP访问网站都无关紧要。

edit2:这个错误的原因是一条非常长的行,将它分成多行解决了这个问题。