HTTP 常见状态码解析

ops/2024/12/13 17:31:06/
http://www.w3.org/2000/svg" style="display: none;">

HTTP 常见状态码解析

文章目录

  • HTTP 常见状态码解析
    • 一、引言
    • 二、1XX 信息性状态码
      • (一)100 Continue
      • (二)101 Switching Protocols
    • 三、2XX 成功状态码
      • (一)200 OK
      • (二)201 Created
      • (三)204 No Content
    • 四、3XX 重定向状态码
      • (一)301 Moved Permanently
      • (二)302 Found(曾经也叫 302 Moved Temporarily)
      • (三)304 Not Modified
    • 五、4XX 客户端错误状态码
      • (一)400 Bad Request
      • (二)401 Unauthorized
      • (三)403 Forbidden
      • (四)404 Not Found
      • (五)405 Method Not Allowed
    • 六、5XX 服务器错误状态码
      • (一)500 Internal Server Error
      • (二)502 Bad Gateway
      • (三)503 Service Unavailable
      • (四)504 Gateway Timeout

一、引言

在互联网的世界中,HTTP(超文本传输协议)扮演着至关重要的角色,它负责在客户端(如浏览器)和服务器之间传递信息,实现网页浏览、数据交互等功能。而 HTTP 状态码则是服务器对客户端请求做出响应时返回的一种标识代码,通过这些状态码,客户端可以快速了解请求的处理结果。了解常见的 HTTP 状态码,对于开发者、运维人员以及任何涉及网络应用开发和使用的人员来说,都非常有必要,它有助于我们快速定位问题、判断请求是否成功以及理解服务器的响应意图。接下来,我们将详细介绍 HTTP 中一些常见的状态码及其含义。

二、1XX 信息性状态码

(一)100 Continue

含义:客户端发起请求时,在请求头部包含 Expect: 100-continue 字段,表示客户端希望在发送请求体之前,先确认服务器是否愿意接收该请求(通常用于较大请求体的情况)。如果服务器愿意接收,就会返回 100 Continue 状态码,告知客户端可以继续发送请求体了。
应用场景:比如在上传大文件时,客户端先发送请求头询问服务器,收到该状态码后再发送文件内容,这样可以避免不必要的带宽浪费,提高传输效率。

(二)101 Switching Protocols

含义:服务器根据客户端的请求,同意切换协议,并告知客户端将使用新的协议来进行后续通信。常见于 HTTP 升级为 WebSocket 等场景,用于实现实时双向通信。
应用场景:当浏览器想要与服务器建立 WebSocket 连接来实现实时聊天功能时,服务器收到升级协议的请求后,如果同意切换,就会返回这个状态码,随后双方开始基于 WebSocket 协议进行通信。

三、2XX 成功状态码

(一)200 OK

含义:表示客户端的请求已成功被服务器接收、理解并处理,服务器返回了客户端所请求的资源。这是最常见也是我们最希望看到的成功状态码,意味着一切按预期进行。
应用场景:例如,在浏览器中输入一个网址请求网页内容,服务器成功找到并返回网页的 HTML 文件时,就会返回 200 OK 状态码,浏览器随后解析该文件并展示出页面。

(二)201 Created

含义:当客户端向服务器提交资源创建请求(如通过 POST 方法创建新用户、新文章等),并且服务器成功创建了相应资源后,会返回这个状态码,同时通常会在响应头的 Location 字段中给出新创建资源的 URL 地址,方便客户端后续访问。
应用场景:在一个内容管理系统中,用户通过表单提交一篇新文章,服务器成功将文章保存到数据库并创建相应记录后,返回 201 Created 状态码告知客户端文章创建成功,并在响应中告知客户端去哪里查看这篇新文章。

(三)204 No Content

含义:服务器成功处理了客户端的请求,但没有需要返回的内容实体,通常用于响应那些只需要知道操作是否成功,而不需要获取具体数据的请求,比如删除操作。
应用场景:当用户在应用中删除一条记录,服务器成功删除该记录后,返回 204 No Content 状态码,表示删除操作已顺利完成,无需向客户端返回额外信息。

四、3XX 重定向状态码

(一)301 Moved Permanently

含义:服务器告知客户端所请求的资源已经永久性地移动到了新的 URL 地址,客户端后续再次访问该资源时,应该使用新的 URL。同时,搜索引擎等会根据这个状态码更新其索引中的链接指向。
应用场景:比如某个网站进行了域名更换或者页面的永久性迁移,服务器就会对旧的资源链接返回 301 Moved Permanently 状态码,并在响应头的 Location 字段中指明新的地址,引导客户端和搜索引擎更新访问路径。

(二)302 Found(曾经也叫 302 Moved Temporarily)

含义:表示客户端请求的资源临时移动到了其他 URL,客户端此次访问应重定向到新的 URL,但下次请求时可能还会回到原来的地址,与 301 的永久性重定向有所区别。
应用场景:在一些网站的登录验证场景中,用户访问某个需要登录后才能查看的页面,服务器可能先将其重定向到登录页面(返回 302 Found 状态码),待用户登录成功后,再根据情况引导回原本要访问的页面。

(三)304 Not Modified

含义:客户端发送条件请求(通常带有 If-Modified-SinceIf-None-Match 等条件首部),服务器根据条件判断资源自上次客户端获取后没有发生变化,于是直接告知客户端资源未修改,客户端可以继续使用本地缓存的版本,节省带宽和服务器资源。
应用场景:浏览器在加载网页资源时,会先查看本地缓存是否有对应资源以及其有效期,若缓存快过期了,会向服务器发送条件请求,若服务器判断资源确实没变化,就返回 304 Not Modified 状态码,浏览器继续使用本地缓存的资源进行页面渲染。

五、4XX 客户端错误状态码

(一)400 Bad Request

含义:客户端发送的请求存在语法错误或者请求无法被服务器理解,可能是请求格式不正确、参数缺失或不符合要求等原因导致。
应用场景:比如在一个 API 调用中,客户端没有按照接口文档要求的格式传递参数,或者传递了不合法的参数值,服务器就会返回 400 Bad Request 状态码,表示无法处理这样的请求。

(二)401 Unauthorized

含义:表示客户端请求的资源需要进行身份验证,但客户端未提供有效的身份验证凭据或者提供的凭据无效,服务器拒绝提供相应资源。
应用场景:当用户试图访问一个受保护的网页或 API 资源,却没有登录或者登录信息过期时,服务器会返回 401 Unauthorized 状态码,提示用户进行登录操作以获取访问权限。

(三)403 Forbidden

含义:客户端已经通过了身份验证(如有),但仍然没有权限访问所请求的资源,服务器禁止了该访问请求,通常意味着权限不足。
应用场景:在一个企业级应用中,普通员工用户登录后试图访问只有管理员才能访问的系统配置页面,服务器核实用户身份后,发现其权限不够,就会返回 403 Forbidden 状态码拒绝访问。

(四)404 Not Found

含义:服务器无法找到客户端所请求的资源,该资源可能不存在或者已经被删除等。这是在网页浏览中经常遇到的一个状态码。
应用场景:当用户在浏览器中输入了一个错误的网址,或者请求的网页内容已经被移除,服务器就会返回 404 Not Found 状态码,告知用户找不到相应资源。

(五)405 Method Not Allowed

含义:客户端使用的请求方法(如 GET、POST、PUT 等)在请求的资源上不被允许,服务器支持的请求方法通常会在响应头的 Allow 字段中列出。
应用场景:例如,某个 API 接口只允许使用 POST 方法来提交数据,但客户端却使用了 GET 方法发起请求,服务器就会返回 405 Method Not Allowed 状态码,提示客户端应更换正确的请求方法。

六、5XX 服务器错误状态码

(一)500 Internal Server Error

含义:服务器在处理客户端请求时遇到了内部错误,导致无法完成请求的处理,这通常是服务器端代码出现问题,比如程序崩溃、数据库连接异常等,但具体错误原因不会在这个状态码中体现出来。
应用场景:在一个 Web 应用中,如果服务器端的业务逻辑代码出现了未捕获的异常,导致无法正确处理客户端的请求,就会返回 500 Internal Server Error 状态码,开发人员需要查看服务器端的日志等信息来排查具体故障原因。

(二)502 Bad Gateway

含义:服务器作为网关或代理,从上游服务器(如后端应用服务器、数据库服务器等)获取响应时出现了错误,无法正常转发响应给客户端,可能是上游服务器故障、网络连接问题等原因导致。
应用场景:在使用反向代理服务器的架构中,如果后端的 Web 应用服务器出现故障,无法响应代理服务器的请求,代理服务器就会向客户端返回 502 Bad Gateway 状态码,表示出现了网关相关的错误。

(三)503 Service Unavailable

含义:服务器目前暂时无法处理客户端的请求,通常是因为服务器正在维护、过载或者出现了临时的故障,一般会在响应头中告知客户端可以尝试再次请求的时间(通过 Retry-After 字段)。
应用场景:例如,网站进行服务器升级维护时,会对外返回 503 Service Unavailable 状态码,告知用户服务器暂时不可用,并可能提示用户在某个时间之后再尝试访问。

(四)504 Gateway Timeout

含义:服务器作为网关或代理,在规定时间内无法从上游服务器获取到响应,超时了,所以无法将响应转发给客户端,意味着上游服务器响应过慢或者出现了通信故障。
应用场景:在分布式系统中,当代理服务器向后端某个服务请求数据,但后端服务由于性能问题或者网络拥塞等原因迟迟没有响应,超过了代理服务器设置的等待时间,代理服务器就会向客户端返回 504 Gateway Timeout 状态码。

了解这些常见的 HTTP 状态码,能够帮助我们更好地理解网络请求与响应的过程,快速定位问题所在,无论是在开发过程中优化应用,还是在日常使用网络应用时排查故障,都有着重要的作用。


http://www.ppmy.cn/ops/141594.html

相关文章

NoSQL大数据存储技术测试(5)MongoDB的原理和使用

单项选择题 第1题 关于 MongoDB 集群部署下面说法不正确的是() 已经不使用主从复制的模式 在实际应用场景中, Mongodb 集群结合复制集和分片机制 MongoDB 支持自动分片, 不支持手动切分 (我的答案) 每…

黑盒白盒测试

任务1 黑盒测试之等价类划分法 【任务需求】 【问题】例:某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息…

【2】数据分析基础(关于Numpy 的基础 1)

NumPy NumPy是什么?NumPy(Numerical Python的缩写)是一个开源的Python科学计算模块,其中包含了许多实用的数学函数,用来处理数值型数据。 优点: 1. 很多更高级的扩展模块都依赖于NumPy,比如p…

国产物联网平台(IotSharp+IoTGateway+Influxdb)快速上手

环境说明: Visual Studio 2022 CommunityIotSharp代码:https://github.com/IoTSharp/IoTSharp.gitIoTGateway版本:v2.1.1Node版本:v20.18.1Influxdb版本:v2.7.11 安装Node Node.js官网 官网下载并安装,…

Android Studio 控制台输出的中文显示乱码

1. Android Studio 控制台输出的中文显示乱码 1.1. 问题 安卓在调试阶段,需要查看app运行时的输出信息、出错提示信息。乱码,会极大的阻碍开发者前进的信心,不能及时的根据提示信息定位问题,因此我们需要查看没有乱码的打印信息。…

机器学习周报(12.2-12.8)

文章目录 摘要Abstract Vision Transformer1 原理2 代码 摘要 本周学习了Vision Transformer (ViT) 的基本原理及其实现,并完成了基于PyTorch的模型训练、验证和预测任务。深入理解了ViT如何将图像分割成patch作为输入序列,并结合Transformer Encoder处…

Pydantic中的discriminator:优雅地处理联合类型详解

Pydantic中的discriminator:优雅地处理联合类型详解 引言1. 什么是discriminator?2. 基本使用示例3. discriminator的工作原理4. 更复杂的实际应用场景5. 使用建议6. 潜在陷阱和注意事项结论最佳实践 引言 在Python的类型系统中,有时我们需要…

使用 XAML 和 C# 旋转 3D 立方体

此示例演示如何使用 XAML 显示和旋转 3D 立方体。它显示一个带有滚动条的蓝色三维立方体,您可以使用滚动条旋转立方体以从不同方向查看它。 下面显示了该程序的完整 XAML 代码。XAML 代码处理所有用户交互,包括旋转立方体,因此该示例不需要任…