我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

在测试各种服务器端返回值代码的时候,苏南大叔发现了一个有意思的现象:在浏览器的开发者工具里面,network的状态值一栏,有的时候显示的是对应的状态码(比如最常见的404),有的时候显示的是fail。而页面上显示的时候,有的是浏览器的默认404页面,有的是空白页面,甚至有的是自定义页面。这究竟是为什么呢?

苏南大叔:在开发者工具中,为什么有的服务器返回值的状态值是fail? - 服务器返回值为fail
在开发者工具中,为什么有的服务器返回值的状态值是fail?(图4-1)

苏南大叔的"程序如此灵动博客",记录苏南大叔的代码所学所想。本文测试环境:win10php@8.2.1chrome@121.0.6167.189。其实,本文的结论和php没有什么关系,只是一个习惯性的认知误差而已。

浏览器默认页面

并不是所有的404页面,都长成下面这样的:

苏南大叔:在开发者工具中,为什么有的服务器返回值的状态值是fail? - 谷歌默认页面
在开发者工具中,为什么有的服务器返回值的状态值是fail?(图4-2)

这只是浏览器处理404状态的一个默认情况,并不是一成不变的。比如以前浏览器的默认404页面是个小恐龙页面。

如果404显示浏览器定制的默认页面,那么,唯一的可能性就是:服务器端只发出了一个状态码404,其余没有任何字符输出。(连个空格都没输出)。这种情况下,

  • network里面监控到的状态码就不是404,而是fail
  • 同时,页面显示的内容是浏览器定义的默认页面。

苏南大叔:在开发者工具中,为什么有的服务器返回值的状态值是fail? - 404-status-fail
在开发者工具中,为什么有的服务器返回值的状态值是fail?(图4-3)

页面非默认

如果服务器端在发出错误代码(例如404)的时候,顺便输出一个空白字符。那么,

  • network里面监控到的状态码就是404,而不是fail
  • 同时,页面显示的内容是就是空白。

苏南大叔:在开发者工具中,为什么有的服务器返回值的状态值是fail? - 空白字符404
在开发者工具中,为什么有的服务器返回值的状态值是fail?(图4-4)

当然,页面也可以展示为一个自定义的有趣的404页面。甚至展示为一个常规的页面,也是可以的。它和常见页面的区别,仅仅在于一个不起眼的状态码:一个是404,一个是200

nginx自定义404页面的方式,可以参考:

表格总结

真实状态码network检测如何模拟
404404除了状态码,随便输出点其它字符,空白字符也行
404fail输出状态码之后,不要输出任何字符!

结语

没有可写的,随便丢个链接在这里:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php