我正在为一个项目构建一个简单的 HTTP 服务器。大多数网站都有自定义 404 错误页面。但有时,您会看到 Firefox 吐出一个通用的 404 页面(或 405 等)。它如何决定做什么?HTTP 响应应该是什么?“HTTP/1.0 404 NOT FOUND”是否足够?
谢谢
我正在为一个项目构建一个简单的 HTTP 服务器。大多数网站都有自定义 404 错误页面。但有时,您会看到 Firefox 吐出一个通用的 404 页面(或 405 等)。它如何决定做什么?HTTP 响应应该是什么?“HTTP/1.0 404 NOT FOUND”是否足够?
谢谢
如果服务器找不到请求的资源(例如网页),它会在 HTTP 标头部分发送HTTP/1.0 404 NOT FOUND。
服务器可以为这个错误映射一个错误页面,这样你就可以获得一个可读的错误页面。浏览器还可以映射自己的错误页面,因此您可以看到特定于浏览器的错误 404 消息。
您可以在日志文件的状态字段中看到错误代码。
您可以使用以下结构将用户重定向到特定页面:
<HTML>
<head>
<meta HTTP-EQUIV="Refresh" CONTENT="5; URL=not404.htm">
</head>
</HTML>
如果您正在创建 HTTP 服务器,您可能需要查看描述协议的 RFC:http: //www.faqs.org/rfcs/rfc2616.html
对于 404 状态代码,它说:
服务器未找到任何与请求 URI 匹配的内容。没有
说明这种情况是暂时的还是
永久性的。如果服务器通过一些内部可配置的机制知道旧资源永久不可用并且没有转发地址,则应该使用 410 (Gone) 状态代码。当服务器不希望确切地揭示请求被拒绝的原因或没有其他响应适用时,通常使用此状态代码。
您无法控制浏览器如何处理每个状态码,您应该依赖它的良好行为。
也就是说,您可能会受益于使用现有的 HTTP 服务器之一。看看几天前发布的这个关于如何用 C 或 C++ 创建 HTTP 服务器的问题,
返回带有 404 响应代码的 html 正文是完全有效的。如果没有提供正文,则浏览器将显示默认页面。
因此,Firefox 在大多数情况下不会显示通用的 404 错误页面;您正在考虑 Internet Explorer,它会忽略网站的 404 页面,如果它低于特定大小并显示自己的页面。
一般设置在webserver中,即:当服务器收到404时,参考这个页面。