谷歌浏览器仍然面临一个奇怪的问题。我有一个从 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 以查看在传输数据或其他东西时是否会出现问题,但在这方面似乎一切正常。
如果 HTTP 标头中提供的信息与交付文件的有效大小不同,我在 Google 上阅读了有关内容长度的内容,这将使 Chrome 失败。在我看来,情况并非如此,因为没有提供内容长度。
欢迎任何帮助!谢谢!