首页 / 科技 / 正文

你刷网页时撞见的404、502,全是HTTP状态码在递小纸条

上周三加班到十点,想摸鱼点开收藏夹里存了半年的「深夜烧烤测评」,页面直接弹了个大白板,中间飘着个404 Not Found。

我当时第一反应是拔路由器重插,捅了半天牙签,网还是满格。直到我把那行字盯了三秒,才反应过来——哦,是那个烧烤店上个月倒闭了,博主把链接删了。

浏览器与Web服务器请求响应交互流程示意图

别再乱怪wifi了,这些数字的锅分得明明白白

很多人看到页面打不开,第一反应都是骂运营商垃圾,要么就把路由器重启八百遍。但其实你只要看一眼那三个数字的开头,就能把锅甩得明明白白。

我给你举个最通俗的例子:你(浏览器)下楼去便利店(服务器)买冰可乐,递了个条子(HTTP请求)说要拿一瓶无糖的。

店员拿到条子如果直接给你拿可乐,你根本不会收到多余的纸条——这就是2xx开头的状态码,代表一切顺利,你这辈子都不会在页面上看到它。

如果店员跟你说“不好意思,可乐在隔壁仓库,我带你过去”,或者“你之前买过的可乐我们给你留了货,直接给你用上次的小票就行”——这就是3xx开头的状态码,要么是跳转,要么是用缓存帮你省时间省流量。

要是店员跟你说“你找的无糖可乐我们上周就卖完了”,或者“这个可乐是我们老板私人的,不能卖给你”——这就是4xx开头的状态码,锅基本在你这边:要么是你存的链接过期了,要么是你没权限看人家的私密内容,跟你家wifi半毛钱关系都没有。

要是店员跟你说“店长现在不在,我拿不到货”,或者“店里现在挤满了人,挤不进来”——这就是5xx开头的状态码,全是对面网站的锅。谁没在抢演唱会票的时候被502坑过?我上次抢五月天的票,刚点提交,屏幕直接跳502 Bad Gateway,我当场把手里的珍珠奶茶捏得撒了半桌,旁边同事都以为我被老板抓了摸鱼。

真的。

你眼熟的那些报错,其实藏着好多偷懒的小心思

说实话,我之前一直以为这些状态码全是用来报错的,直到我折腾了个小博客,才发现这里面全是帮你省成本的小心思。

就拿最常见的304 Not Modified来说,你上次刷过的猫咖测评,浏览器已经把图片、文字全存在你电脑的缓存里了。下次你再点同一个链接,如果博主根本没改内容,服务器根本不用把几M的图片再传一遍,只要给你发个304的小纸条:“你之前存的那个还能用,直接用就行”。

省流量到什么程度?

我之前试过,要是把304关了,打开同一个网页的流量直接翻了三倍,加载速度还慢了两秒。说白了这就是服务器和浏览器之间的暗号,帮你省流量,也帮人家省带宽,双赢的事。

还有301永久重定向,很多独立博客换域名的时候都会用这个。不是那种硬邦邦的“请前往新网站”的提示,而是直接把你导到新地址,连你输入旧链接的时候都不用多等一秒。我之前帮我妈找广场舞的伴奏下载页,点进去跳了个301,我以为链接坏了,折腾了十分钟,又是换浏览器又是切流量,后来才反应过来人家只是换了个域名而已。

HTTP常见状态码对应报错场景对照表
HTTP常见状态码对应报错场景对照表

那些你没见过的状态码,其实才是最懂你的

不过话说回来,也不是所有状态码都一脸严肃。

我之前逛一个独立摄影师的博客,404页面画了个圆滚滚的茶壶,旁边写着418 I’m a teapot——翻译过来就是“我是茶壶,没法给你冲咖啡”。这其实是个几十年前的技术彩蛋,很多小网站都喜欢把它藏在报错页里,就像店员跟你开玩笑说“我是卖可乐的,不会做奶茶哦”。

还有429 Too Many Requests,很多人遇到这个就以为网坏了,其实是你刚才刷某个网站刷太猛了——比如你连续点了十次刷新抢限量周边,服务器直接给你发个小纸条:“你歇会,刷太快了我扛不住”。等个十秒再点,基本就好了,不用反复重启路由器。

我上次遇到个451,盯了五分钟都没搞懂,后来查了才知道,是这个页面按照当地的规定没法展示,既不是我网坏了,也不是网站跑路了,就是单纯被拦了而已。

现在你再遇到网页报错,别上来就拔路由器。看一眼那三个数字的开头,就知道该骂运营商,还是该骂网站运营,还是该怪自己把过期的烧烤店链接存了三年。