在进行网络请求时,HTTP状态码是服务器响应的重要组成部分,它不仅指示了请求的处理结果,还能帮助开发者快速定位问题。本文将详细介绍常见的HTTP状态码,特别是401、402、503、504、505等状态码的含义及其应用场景,并将状态码按类别与请求关系、报错因果和顺序进行清晰的梳理。
一、HTTP状态码概述
HTTP状态码由三位数字组成,分为五个类别:
-
1xx:信息性状态码,表示请求已被接收,继续处理。
-
2xx:成功状态码,表示请求已成功处理。
-
3xx:重定向状态码,表示请求需要进一步操作才能完成。
-
4xx:客户端错误状态码,表示请求有误或无法完成。
-
5xx:服务器错误状态码,表示服务器在处理请求时发生了错误。
请求关系如下:
4xx 状态码的关系
请求检验顺序
1. 先检查请求格式:
- 如果请求格式无效或参数缺失,返回 400 Bad Request。
2. 校验身份信息:
- 如果请求有效,但缺少身份验证信息,返回 401 Unauthorized。
3. 查看是否为支付需求:
- 如果请求需要支付但未实现,返回 402 Payment Required。
4. 检查用户权限:
-
如果请求有效且身份验证通过,但用户没有访问权限,返回 403 Forbidden。
-
查找资源是否存在存在:
-
如果请求的资源不存在,返回 404 Not Found。
下面这个小故事可以帮助记忆:
你去银行办事,柜员让你先填表。你递上表格,但柜员摇头说:“表格不完整。”(400 Bad Request)。补好后,她要求你出示身份证。你忘了带,柜员说:“需要身份信息。”(401 Unauthorized)。确认身份后,她问:“需要支付手续费吗?”你发现没带钱,柜员提醒:“必须支付。”(402 Payment Required)。最后,她检查你的资格,发现你不符合条件,便说:“抱歉,您没有办理资格。”(403 Forbidden)。最终,当你请求的服务不存在时,柜员只能告诉你:“这个服务目前无法提供。”(404 Not Found)
校验顺序为:表400-身份401-支付402-资格403-资源404
5xx 状态码的关系
请求处理顺序
1. 服务器内部错误:
- 如果服务器在处理请求时发生意外错误,返回 500 Internal Server Error。
2. 未实现的功能:
- 如果请求的方法未被服务器支持,返回 501 Not Implemented。
3. 无效的网关响应:
- 如果服务器作为网关或代理时,从上游服务器接收到无效响应,返回 502 Bad Gateway。
4. 服务不可用:
- 如果服务器当前无法处理请求,通常是由于过载或维护,返回 503 Service Unavailable。
5. 网关超时:
- 如果服务器作为网关或代理时,未能在规定时间内从上游服务器获取响应,返回 504 Gateway Timeout。
下面这个小故事可以帮助记忆:
你的信息都校验合格了,柜员处理你的请求时突然说:“抱歉,系统出现了问题。”(500 Internal Server Error)。系统恢复后,柜员是:“这个请求的功能我们还没实现。”(501 Not Implemented)。升级系统后,她检查上游系统,发现:“从其他部门获取的信息无效。”(502 Bad Gateway)。然后,柜员无奈地告诉你:“现在服务暂时不可用。”(503 Service Unavailable)。最后,她补充道:“请求的处理超时了,请稍后再试。”(504 Gateway Timeout)。
内部流程为:系统500-方法501-网关502-服务503-超时504
3xx 状态码的关系
请求处理顺序
1. 资源已永久移动:
- 如果请求的资源已被永久移动到新位置,返回 301 Moved Permanently。
2. 资源临时移动:
- 如果请求的资源临时移动到新位置,返回 302 Found。
3. 其他重定向:
- 如果请求的资源需要其他重定向处理,返回 303 See Other。
- 未修改:
- 如果请求的资源未被修改,返回 304 Not Modified。
- 使用代理:
- 如果请求的资源需要通过代理访问,返回 305 Use Proxy。
下面这个小故事可以帮助记忆:
你去商店找某个商品,店员告诉你:“这个商品已永久搬到新地址。”(301 Moved Permanently)。你按照新地址去找,但店员又说:“现在这个商品临时放在另一个地方。”(302 Found)。你询问后,店员说:“请查看其他地方。”(303 See Other)。当你再次询问时,店员说:“这个商品没有变化,您可以继续使用之前的信息。”(304 Not Modified)。最后,店员补充道:“请通过代理商购买这个商品。”(305 Use Proxy)。
🥺 求个赞,求个赞,求个赞! 如果你觉得我的文章有点可爱,请点个赞吧!我会在心里默默为你祈祷好运!✨🙏