标准 404 页面何时出现?

Posted

技术标签:

【中文标题】标准 404 页面何时出现?【英文标题】:When does the standard 404 page appear? 【发布时间】:2010-09-17 09:52:30 【问题描述】:

我正在为一个项目构建一个简单的 HTTP 服务器。 大多数网站都有自定义 404 错误页面。但有时,您会看到 Firefox 吐出一个通用的 404 页面(或 405 等)。 它如何决定做什么? HTTP 响应应该是什么? “HTTP/1.0 404 NOT FOUND”够吗?

谢谢

【问题讨论】:

令人惊讶的是,即使在 2017 年 4 月,Firefox 也不知道如何或何时根据 HTTP 状态代码显示默认错误页面。到目前为止,我还没有找到将 HTTP 500 错误代码链接到默认 Firefox 错误页面的方法,而所有其他浏览器都已经理解这一点。 【参考方案1】:

如果服务器找不到请求的资源(例如网页),它会在 HTTP 标头部分发送 HTTP/1.0 404 NOT FOUND

服务器可以为该错误映射错误页面,因此您可以获得可读的错误页面。 浏览器还可以映射自己的错误页面,因此您可以看到特定于浏览器的错误 404 消息。

您可以在日志文件的状态字段中看到错误代码。

您可以将用户重定向到具有这种结构的特定页面:

<html>
<head>
<meta HTTP-EQUIV="Refresh" CONTENT="5; URL=not404.htm">
</head>
</HTML>

查看Welcome to 404 Error Pages .com的详细信息

【讨论】:

这里的问题是只有 Chrome 和 IE 实际上将 HTTP 状态代码映射到实际的默认错误页面。 Firefox 认为用户显示一个完全空白的页面更容易,并希望用户打开开发人员工具栏,转到网络选项卡,重新加载页面,并阅读响应的 HTTP 状态代码,然后谷歌该响应以找到出意义。是的,比显示默认错误页面要容易得多.. 太棒了。【参考方案2】:

返回带有 404 响应代码的 html 正文是完全有效的。如果没有提供正文,则浏览器将显示默认页面。

    如果您只发送 HTTP/1.0 404 NOT FOUND,则将显示浏览器默认设置。 如果您在响应中添加正文,浏览器将主要使用它。

【讨论】:

要挑剔的是,包含 404 响应的不是 html 正文,而是 HTTP 标头... 见w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4 - 服务器应该包含一个解释错误的正文。 标题包含错误代码,正文包含人类可读的错误消息。 (*) Mozilla Firefox 除外,它显示一个直观、用户友好且完全空白的页面。【参考方案3】:

如果您正在创建 HTTP 服务器,您可能需要查看描述协议的 RFC:http://www.faqs.org/rfcs/rfc2616.html

对于 404 状态码它说:

服务器没有找到任何东西 匹配请求 URI。没有 指示是否 状况是暂时的或 永恒的。 410 (Gone) 状态码 如果服务器知道,应该使用, 通过一些内部可配置的 机制,旧资源是 永久不可用并且没有 转发地址。这种状态 代码是服务器时常用的 不想透露具体原因 请求被拒绝,或者当 没有其他回应适用。

您无法控制浏览器如何处理每个状态码,您应该依赖它的良好行为。

也就是说,您可能会受益于使用现有的 HTTP 服务器之一。看看这个question几天前发布的关于如何用C或C++创建HTTP服务器,

【讨论】:

你是对的。 Chrome 和 IE 行为正常并显示相应的默认错误页面,而 Firefox 认为最好显示一个空白的空白页面。【参考方案4】:

因此,在大多数情况下,Firefox 不会显示一般的 404 错误页面;您正在考虑 Internet Explorer,它会忽略网站的 404 页面,如果它低于特定大小并显示自己的页面。

【讨论】:

其他错误号呢?服务器应该为所有人发送自定义页面,还是浏览器可以处理? Chrome 也“坏”了?因为它正确显示了正确的默认 404 错误页面以及内部服务器错误和其他默认错误页面。而 Firefox 是“正确的”,因为它只是显示一个空白页面?.. 当然,最好显示一个空白页面,并期望用户打开开发人员工具栏,转到网络选项卡,重新加载页面,读取 HTTP 状态响应的代码,并谷歌该响应以找出含义。是的,这是浏览器的出色表现。非常人性化。【参考方案5】:

一般是在webserver中设置的,即:当服务器得到404时,参考这个页面。

【讨论】:

据我所知,唯一有通用错误页面的浏览器是 MSIE。 @Quentin Chrome 已经在默认错误页面中显示响应代码。 @NathanH 信不信由你,8 年后 Firefox 仍然拒绝显示其默认错误页面。

以上是关于标准 404 页面何时出现?的主要内容,如果未能解决你的问题,请参考以下文章

使用 SSL 的某些页面上出现 404 错误

Laravel-8 .删除帖子时出现 404 错误页面

wordpress网站出现大量错误404页面是怎么回事?

改善用户体验的404页面最佳实践

Next.js 刷新页面后出现404错误

网站为啥会出现404错误,如何解决