一个奇怪的网页横亘在我面前。 (作为一名开发人员,我必须解开这个谜团。)
在任何浏览器中访问网页时,一切似乎都很正常。网页按预期显示。
但是当查看控制台时,服务器实际上返回了 404 状态代码:
那么浏览器为什么要渲染页面呢?
查看正文显示返回了有效的 HTML:
坚持,稍等。响应 404 并一路发送 HTML?浏览器渲染它?
为什么会发生这种情况?这是服务器配置错误吗?还是这里发生了一些我不明白的聪明事情?故意将服务器配置为这样的行为是否有实际原因?
Stack Overflow 上的另一个答案 https://stackoverflow.com/a/4940737/56658包含一些有趣的信息:404 的 HTTP 状态代码加上 HTML 响应正文实际上是由spec https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-p2-semantics-12#page-27.
4xx 类状态代码适用于以下情况:
客户似乎犯了错误。除非响应 HEAD
要求,服务器应该包含一个表示,其中包含
错误情况的解释,以及无论是暂时的还是
永久状态。这些状态代码适用于任何
请求方法。用户代理应该显示任何包含的内容
向用户表示。
这给我留下了两种可能的解释:
解释1:这是服务器错误。
- 服务器wrongly返回 404 状态码
- 浏览器认为响应正文包含有关错误的详细信息并显示它 - 对于最终用户来说,这是实际页面
解释2:这是故意的,目的是为了击败爬虫和页面观察者。
- 服务器故意返回 404 - 非浏览器用户代理不会处理结果,因为它们将其解释为错误
- 浏览器不受影响,只要页面正在显示,最终用户就不会关心
如果您不希望页面被索引,那么第二个确实是一种聪明的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)