问题描述
一个陌生的网页穿过我的路。(作为一名开发人员,我必须解开这个谜团。)
在任何浏览器中访问网页时,一切似乎都正常。网页按预期显示。
但在控制台中查看时,服务器会自动返回404状态代码:
那么为什么浏览器要呈现页面?
查看正文显示返回了有效的HTML:
等一下。响应404并在此过程中发送HTML吗?浏览器会呈现它??
为什么会发生这种情况?这是服务器配置错误吗?还是这里发生了什么我不明白的聪明事?故意将服务器配置为这样运行是否有实际原因?
Http
Another answer on Stack Overflow 包含一些有趣的信息:spec实际上推荐的推荐答案状态码为404plus Html Response Body。
4xx类状态代码适用于 客户似乎弄错了。回复头部时除外 请求时,服务器应包含包含 错误情况说明,是临时性的还是 永久条件。这些状态代码适用于任何 请求方法。用户代理应显示包含的任何 向用户呈现。
这给我留下了两种可能的解释:
解释1:服务器错误。
服务器错误返回404状态码 浏览器认为响应正文包含有关错误的详细信息,并将其显示出来-对于最终用户,这是实际的页面解释2:这是为了击败爬网程序和页面查看程序。
服务器故意返回404-非浏览器用户代理不会处理结果,因为它们将其解释为错误 浏览器不受影响,只要页面正在显示,最终用户就不会在意如果您不希望您的页面被索引,那么第二个确实会很聪明。