【问题标题】:Firefox and Chrome doesn't show default "not found" page when using PHP to send header 404使用 PHP 发送标头 404 时,Firefox 和 Chrome 不显示默认的“未找到”页面
【发布时间】:2015-08-26 23:31:06
【问题描述】:

我使用的是Apache + PHP(Windows下),PHP代码是

<?php
header('HTTP/1.0 404 Not Found');
exit;
?>

Firefox 和 Chrome 不显示默认的“未找到”页面,但 IE 显示正确的“HTTP 错误,404 消息”,为什么?

【问题讨论】:

  • 嗯,我想你会发现它的 IE 没有显示正确的错误页面因为它显示的是“友好错误”......这是一个浏览器设置。
  • 他们是否有一个默认的 Page Not Found 页面开始?有一个 Server Not Found 页面,但这是一个不同的错误。
  • 如果我访问 missing.html,Firefox 和 Chrome 都会显示默认的“未找到”页面,但如果我使用 PHP 发送标头 404 状态,它们将不会显示正常的“未找到”页面,只显示一个空文档,什么都没有。
  • @vsqsf15 - 该页面不属于浏览器。这是 IE 对用户隐藏的服务器响应。您可以在浏览器控制台中自己查看。

标签: php apache google-chrome firefox


【解决方案1】:

据我所知,Chrome 和 Firefox 在所有情况下都按原样显示服务器响应,即使它是一个空文档。只有当没有服务器响应显示(DNS 故障、超时...)时,您才会看到浏览器自身的错误消息。无论您是使用服务器端语言来生成响应还是让 Web 服务器来生成响应,都没有任何区别。

然而,Internet Explorer 有一个名为Show Friendly HTTP Error Messages 的错误/功能,其中浏览器会在某些条件下自动放弃服务器响应(即,文档大小低于给定阈值)。理由是小的响应很可能是 Web 服务器的默认页面,而用户将最喜欢使用他自己的语言的标准浏览器页面。

【讨论】:

  • 服务器可以正常工作,如果我访问 missing.html,Firefox 和 Chrome 都会显示默认的“未找到”页面,但如果我使用 PHP 发送标头 404 状态,它们将不会显示正常的“未找到”页面,只显示一个空文档,什么都没有。
  • 让我猜猜... like this? Mozilla 或 Google 没有人设计该页面!
【解决方案2】:

一个可能的答案,这个问题可能是由 Apache 引起的,当我访问一个丢失的 html 时,它会响应,类似于

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /missing.html was not found on this server.</p>
</body></html>

但是当我使用上面的 PHP 脚本发送 HTTP 404 消息时,apache 只会响应一个空文档。

顺便说一句,我没有在 httpd.conf 中设置任何 ErrorDocument。

【讨论】:

  • 您是否 100% 确定这是您在 IE 中看到的页面?
【解决方案3】:

尝试在响应中设置标题Content-Type: text/plain。 我有一个类似的错误,标题是Content-Type: application/octet-stream,所以浏览器将其视为二进制文件,而不是字符串消息

【讨论】:

    猜你喜欢
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    • 2018-04-29
    相关资源
    最近更新 更多