【您只需记住这些】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 错误,这种情况可能由多种原因造成:

  1. 用户输错了网址。
  2. 指定的页面已过时,不再存在。
  3. 由于服务器配置错误,未设置正确的URL。
  4. 该资源已被暂时移动或删除

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"

当服务器负载因某种原因过高时,就会发生这种情况,导致网关/代理服务器在等待上游服务器响应时超过了指定的超时值。这
使得服务器难以在规定时间内响应用户请求。

此外,重启中间件并暂时重置连接或许可以解决问题,但为了防止问题再次发生,您需要调查处理时间过长的原因。
(延长超时时间是一种解决方案,但我从未见过这种方法在工作时间内奏效。)

病因示例包括以下几种:

  1. 它卡在进行一些繁重的处理任务中了。
  2. 执行消耗大量资源的大规模数据库操作
  3. 网络出现问题
  4. 上游服务器出了问题

琐事

▼418 我是茶壶:

你熟悉 418 错误吗?

这个状态码是在大约 20 年前的愚人节定义的,
当你尝试将咖啡倒入茶壶时,如果被拒绝,就会出现错误。

事实上,它是 HTCPCP(超文本咖啡壶控制协议)通信的状态代码,而不是 HTTP 通信的状态代码,甚至验证工具也显示状态为 418。

如果您感兴趣,这里查看
另外,和 418 一样,HTCPCP 也是愚人节玩笑,所以一定要看看!

概括

至此,我们对状态码中的错误代码的介绍就结束了!
此外,还有一些其他错误代码,例如 499,是由特定的中间件输出的,如果您感兴趣,请务必查看一下!

现在我作为一名基础设施工程师的第一年,经常会遇到状态码,所以如果你感兴趣的话,我建议你学习一下(虽然我一开始对它们一无所知)。

感谢观看!

参考资料:
[常见状态码列表详解] 什么是 HTTP 状态码?按代码编号详细解释
HTTP 状态码列表和详细指南
HTTP 响应状态码
什么是 HTTP 状态码 418?

如果您觉得这篇文章有帮助,请点赞!
6
加载中...
6 票,平均:1.00 / 16
878
X Facebook 哈特纳书签 口袋

写这篇文章的人

关于作者

美琴

我是一名基础设施工程师,于 2024 年 4 月从文理学院加入公司。
我想不出一个昵称,所以我选了一个我妈妈经常用的昵称。
鲸头鹳很可爱,不是吗?