HTTP 常见状态码解析

news/2024/12/14 17:44:52/
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/news/1555080.html

相关文章

word中写论文的一些trick

文章目录 加图注使用latex|matjax语法打公式给公式加上编号引用文献 加图注 这样就给图片插入图注 使用latex|matjax语法打公式 按下alt 会出现下面的情景 在右上角选择专业 然后就可以在里面打入latex或mathjax了,不过这个没有预览功能,可以在别的…

鸿蒙实现应用通知

目录: 1、应用通知的表现形式2、应用通知消息的实现1、发布普通文本类型通知2、发布进度类型通知3、更新通知4、移除通知 3、设置通知道通展示不同形式通知4、设置通知组5、为通知添加行为意图1、导入模块2、创建WantAgentInfo信息3、创建WantAgent对象4、构造Notif…

国科大智能设备安全-APK逆向分析实验

APK逆向分析实验 使用APK常用逆向分析工具,对提供的移动应用程序APK文件进行逆向分析,提交逆向后代码和分析报告。具体任务如下: 任务一:安装并熟悉Apktool、Jadx等APK常用逆向工具的使用方法,对提供的Facebook Updat…

【ETCD】【源码阅读】深入解析 etcd 的 `EtcdServer.Start` 函数

深入解析 etcd 的 EtcdServer.Start 函数 在 etcd 的代码中,EtcdServer.Start 是一个关键方法,用于初始化并启动服务器以便处理请求。本文将从源码的角度逐步分析此函数的每一步操作。 函数签名及注释 // Start performs any initialization of the Se…

【收藏】Cesium 限制相机倾斜角(pitch)滑动范围

1.效果 2.思路 在项目开发的时候,有一个需求是限制相机倾斜角,也就是鼠标中键调整视图俯角时,不能过大,一般 pitch 角度范围在 0 至 -90之间,-90刚好为正俯视。 在网上查阅了很多资料,发现并没有一个合适的…

蓝桥杯刷题——day3

蓝桥杯刷题——day3 题目一题干题目解析代码 题目二题干题目解析代码 题目一 题干 每张票据有唯一的 ID 号,全年所有票据的 ID 号是连续的,但 ID 的开始数码是随机选定的。因为工作人员疏忽,在录入 ID 号的时候发生了一处错误,造…

开源分布式系统追踪-03-CNCF jaeger-01-入门介绍

分布式跟踪系列 CAT cat monitor 分布式监控 CAT-是什么? cat monitor-02-分布式监控 CAT埋点 cat monitor-03-深度剖析开源分布式监控CAT cat monitor-04-cat 服务端部署实战 cat monitor-05-cat 客户端集成实战 cat monitor-06-cat 消息存储 skywalking …

MongoDB-ObjectID 生成器

前言 MongoDB中一个非常关键的概念就是 ObjectID,它是 MongoDB 中每个文档的默认唯一标识符。了解 ObjectID 的生成机制不仅有助于开发人员优化数据库性能,还能帮助更好地理解 MongoDB 的设计理念。 什么是 MongoDB ObjectID? 在 MongoDB …