【您只需记住这些】HTTP 状态码错误快速回顾

介绍
很高兴见到大家!
这是我第一次写博客文章。我是系统解决方案系的御琴,2024届毕业生。
我想不出昵称,所以妈妈就给我取了一个。
错误代码,这些是我在工作中发现比较重要的状态代码 4XX 和 5XX 我主要想解释一下

↑上图中的错误代码为401!
为了解释这一点,我们将查看服务器上记录的示例访问日志中的状态代码,但如果您对此不熟悉,我希望您能快速浏览一下,了解这就是我们通常用来分析访问的内容。
顺便一提,如果您对访问日志感兴趣,请查看以下内容!
[Apache] 如何查看访问日志的简易说明!*2024 年更新
[nginx] 如何查看、配置和查找访问日志的说明。
状态码到底是什么?
状态码是Web 服务器响应 HTTP 请求时返回的三位数。您可以根据这个数字查看请求的状态!
您可以使用开发者工具(Chrome 浏览器中的开发者工具)来查看,欢迎您亲自体验。

↑红色框内的部分是状态码!
状态码已提供信息 (1XX)、成功 (2XX)、重定向 (3XX)、客户端错误 (4XX) 和服务器错误 (5XX)。这有助于清楚地了解访问是否成功,如果失败,则能知道出了什么问题。
两种类型的错误代码
4XX - 客户端错误
以 4 开头的状态码主要表示客户端(用户)端出现问题,当服务器由于请求内容错误或访问被拒绝而无法处理请求时,就会出现这种情况。
例如,我经常看到这样的情况:
▼400 错误请求:
127.0.0.1 - - [2023年12月25日 14:25:00 +0900] "GET /api/data?date=2023-12-33 HTTP/1.1" 400 172 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
这是由于客户端发送的请求格式不正确而返回的 400 错误。
例如,在上面的示例中,客户端为“/api/data”输入了无效日期(2023 年 12 月 23 日),这就是发生 400 错误的原因。
▼401 未经授权:
127.0.0.1 - - [2023年12月25日 13:15:00 +0900] "POST /login HTTP/1.1" 401 187 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
此错误表明客户端未提供正确的身份验证凭据。
在上面的示例中,对 /login 的 POST 请求返回了 401 错误,表明未发送正确的用户名、密码等信息。
▼403 禁止访问:
127.0.0.1 - - [2023年12月25日 13:20:00 +0900] "GET /admin/settings HTTP/1.1" 403 249 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30"
“Forbidden”是一个英文单词,意思是“禁止的”。顾名思义,它是一个错误代码,当请求发送到仅限少数用户访问的路径时可能会显示。
在示例错误中,可以看到一个没有权限的客户端向 /admin/settings 发送了一个 GET 请求,但返回了 403 错误。
▼404 未找到:
127.0.0.1 - - [2023年12月25日 13:25:00 +0900] "GET /about-us HTTP/1.1" 404 210 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1"
当服务器找不到请求的资源时,可能会返回 404 错误,这种情况可能由多种原因造成:
- 用户输错了网址。
- 指定的页面已过时,不再存在。
- 由于服务器配置错误,未设置正确的URL。
- 该资源已被暂时移动或删除
5XX - 服务器错误
以 5 开头的状态码服务器端出现问题表示
例如,有以下几种:
▼500 内部服务器错误:
127.0.0.1 - - [2023年12月25日 14:00:00 +0900] "GET /dashboard HTTP/1.1" 500 215 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
当服务器发生内部错误且无法处理请求时,将返回此错误代码。
如果遇到此错误,请尝试查看您对服务器设置所做的最近更改;这可能有助于您找到原因!
此外,如果错误是在进行某些配置更改后发生的,您通常可以通过恢复到之前的备份来解决它!
▼503 服务不可用:
127.0.0.1 - - [2023年12月25日 14:15:00 +0900] "GET /reports HTTP/1.1" 503 212 "-" "Mozilla/5.0 (iPad; CPU OS 13_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.2 Mobile/15E148 Safari/604.1"
服务器暂时无法处理请求,可能是由于维护或过载所致。
例如,如果访问量突然增加,服务器可能无法处理,并可能返回 503 错误!
▼504 网关超时:
127.0.0.1 - - [2023年12月25日 14:20:00 +0900] "GET /video/stream HTTP/1.1" 504 160 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36"
当服务器负载因某些因素过高时,就会发生这种情况,导致网关/代理服务器在等待上游服务器响应时超过了设定的时间限制(超时值)。这使得服务器
难以在超时前响应用户请求。
有时,重启中间件并暂时重置连接可以解决问题,但为了防止问题再次发生,必须调查处理时间过长的原因。
(延长超时值是一种可能的解决方案,但我从未见过它在实际应用中奏效……)
病因示例包括以下几种:
- 它卡在进行一些繁重的处理任务中了。
- 执行消耗大量资源的大规模数据库操作
- 网络出现问题
- 上游服务器出了问题
琐事
▼418 我是茶壶:

你熟悉 418 错误吗?
这个状态码大约在 20 年前被定义为一个愚人节玩笑,
它表示尝试将咖啡倒入茶壶时被拒绝的错误。
事实上,它是 HTCPCP(超文本咖啡壶控制协议)通信的状态代码,而不是 HTTP 通信的状态代码,甚至验证工具也显示状态为 418。
如果您感兴趣,这里!
另外,HTCPCP 和 418 一样,都是愚人节玩笑,所以请自行查证!
概括
至此,我们对错误代码的介绍就结束了,错误代码是一种状态码!
除了这些,还有其他错误代码,例如 499,它们是由特定的中间件输出的,如果您感兴趣,请随时查阅相关资料!
现在我作为一名基础设施工程师的第一年,经常会遇到状态码,所以如果你感兴趣的话,我建议你学习一下(虽然我一开始对它们一无所知)。
感谢观看!
参考资料:
[常见HTTP状态码详解] 什么是HTTP状态码?按代码编号详细解释
HTTP状态码列表和详细指南
HTTP响应状态码
什么是HTTP状态码418?
8
