Http 服务器返回404作为网页,但网页在浏览器中显示良好-为什么?

Http 服务器返回404作为网页,但网页在浏览器中显示良好-为什么?,http,browser,http-status-code-404,Http,Browser,Http Status Code 404,一个奇怪的网页出现在我面前。(作为一名开发人员,我必须解开这个谜。) 在任何浏览器中访问网页时,一切都很正常。网页按预期显示 但在控制台中查看时,服务器会准确返回404状态代码: 那么,为什么浏览器呈现一个页面呢 查看正文显示返回了有效的HTML: 等一下。响应404并沿途发送HTML?浏览器会渲染它吗 为什么会这样?这是服务器配置错误吗?还是有什么我不明白的聪明事?有没有一个实际的理由专门将服务器配置为这样的行为?包含一些有趣的信息:HTTP状态代码404加上HTML响应正文实际上是用户推

一个奇怪的网页出现在我面前。(作为一名开发人员,我必须解开这个谜。)

在任何浏览器中访问网页时,一切都很正常。网页按预期显示

但在控制台中查看时,服务器会准确返回404状态代码:

那么,为什么浏览器呈现一个页面呢

查看正文显示返回了有效的HTML:

等一下。响应404并沿途发送HTML?浏览器会渲染它吗

为什么会这样?这是服务器配置错误吗?还是有什么我不明白的聪明事?有没有一个实际的理由专门将服务器配置为这样的行为?

包含一些有趣的信息:HTTP状态代码404加上HTML响应正文实际上是用户推荐的

4xx类状态代码适用于以下情况: 客户似乎犯了错误。对头部作出响应时除外
请求时,服务器应包含一个包含
错误情况的说明
,以及错误是暂时的还是
永久状态。这些状态代码适用于任何
请求方法。用户代理应显示任何包含的内容
对用户的表示

这给我留下了两种可能的解释:

解释1:这是服务器错误。

  • 服务器错误地返回404状态代码
  • 浏览器认为响应正文包含有关错误的详细信息并显示它-对于最终用户来说,这是实际页面
解释2:这样做是为了打败爬虫和页面观察者。

  • 服务器故意返回404-非浏览器用户代理不会处理结果,因为他们将其解释为错误
  • 浏览器不受影响,只要页面被显示,最终用户就不在乎

如果你不希望你的页面被编入索引,那么第二种方法确实有点聪明。

我也面临同样的情况。我的门户托管在tomcat服务器中。当主机名和tomcat目录路径被命中时,门户被加载。但在加载页面时,该网页重定向到一个深度链接URL并呈现该页面。但是,如果您直接在浏览器中点击深度链接URL,则在开发工具的网络选项卡中会出现404错误,尽管网页会呈现良好。 发生这种情况的原因是,在服务器配置文件中的任何位置都没有作为深度链接URL的资源,因此当它搜索资源时,找不到资源,并在“开发工具”的“网络”选项卡中返回404。 但浏览器的行为与资源URL不同。它首先加载并连接到资源的主机名,当返回成功时,将根据配置文件设置重定向,并呈现深度链接URL资源HTML,正确设置内容样式