【您只需记住这些】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。
如果您感兴趣,这里查看
另外,和 418 一样,HTCPCP 也是愚人节玩笑,所以一定要看看!
概括
至此,我们对状态码中的错误代码的介绍就结束了!
此外,还有一些其他错误代码,例如 499,是由特定的中间件输出的,如果您感兴趣,请务必查看一下!
现在我作为一名基础设施工程师的第一年,经常会遇到状态码,所以如果你感兴趣的话,我建议你学习一下(虽然我一开始对它们一无所知)。
感谢观看!
参考资料:
[常见状态码列表详解] 什么是 HTTP 状态码?按代码编号详细解释
HTTP 状态码列表和详细指南
HTTP 响应状态码
什么是 HTTP 状态码 418?
6