HTTP响应码详解
HTTP响应状态码是服务器对客户端请求的回应,分为5个大类,由三位数字组成,第一位数字定义了响应的类别。
·
HTTP响应状态码完整详解
HTTP响应状态码是服务器对客户端请求的回应,分为5个大类,由三位数字组成,第一位数字定义了响应的类别。
一、状态码分类总览
| 类别 | 含义 | 说明 |
|---|---|---|
| 1xx | 信息性 | 服务器已收到请求,需要客户端继续操作 |
| 2xx | 成功 | 请求已成功被服务器接收、理解并处理 |
| 3xx | 重定向 | 需要客户端进一步操作才能完成请求 |
| 4xx | 客户端错误 | 请求包含语法错误或无法被服务器执行 |
| 5xx | 服务器错误 | 服务器在处理请求过程中发生了错误 |
二、1xx 信息性响应(Informational)
这类状态码表示临时响应,仅包含状态行和某些可选的响应头,不包含响应体。
100 Continue
- 含义:继续
- 说明:服务器已收到请求头,客户端应继续发送请求体
- 使用场景:客户端发送
Expect: 100-continue请求头时,服务器返回此状态码表示可以继续发送请求体 - 注意:如果服务器已经收到请求体,则不需要返回此状态码
101 Switching Protocols
- 含义:切换协议
- 说明:服务器已理解客户端的协议切换请求,并将切换到请求的协议
- 使用场景:WebSocket升级(
Upgrade: websocket)、HTTP/2升级
102 Processing (WebDAV)
- 含义:处理中
- 说明:服务器已收到并正在处理请求,但尚未完成
- 使用场景:WebDAV的复杂操作,防止客户端超时
103 Early Hints
- 含义:早期提示
- 说明:服务器在最终响应之前,提前发送一些响应头
- 使用场景:提前告知客户端预加载资源,提升页面加载速度
- 注意:HTTP/2和HTTP/3支持,HTTP/1.1不支持
三、2xx 成功响应(Successful)
这类状态码表示请求已成功处理。
200 OK
- 含义:成功
- 说明:请求已成功处理,响应体包含请求的资源
- 使用场景:GET、POST、PUT、DELETE等请求成功时的标准响应
201 Created
- 含义:已创建
- 说明:请求成功,并且服务器创建了新的资源
- 使用场景:POST或PUT请求创建资源成功
- 注意:响应头中应包含
Location字段,指向新创建的资源URI
202 Accepted
- 含义:已接受
- 说明:服务器已接受请求,但尚未处理
- 使用场景:异步处理任务,如批量操作、后台任务
- 注意:不保证请求最终会被成功处理
203 Non-Authoritative Information
- 含义:非权威信息
- 说明:服务器已成功处理请求,但返回的元信息不是来自原始服务器
- 使用场景:代理服务器返回的缓存或转换后的资源
204 No Content
- 含义:无内容
- 说明:服务器已成功处理请求,但没有返回任何内容
- 使用场景:DELETE请求成功、PUT更新成功但不需要返回内容
- 注意:响应体必须为空,但响应头可以包含有用信息
205 Reset Content
- 含义:重置内容
- 说明:服务器已成功处理请求,客户端应重置文档视图
- 使用场景:表单提交后,要求客户端清空表单
206 Partial Content
- 含义:部分内容
- 说明:服务器成功处理了部分GET请求
- 使用场景:断点续传、分块下载
- 注意:响应头中必须包含
Content-Range字段,指示返回的字节范围
207 Multi-Status (WebDAV)
- 含义:多状态
- 说明:返回多个独立操作的状态信息
- 使用场景:WebDAV的批量操作
208 Already Reported (WebDAV)
- 含义:已报告
- 说明:在多状态响应中,避免重复报告相同的资源状态
226 IM Used
- 含义:已使用实例操作
- 说明:服务器已完成对资源的GET请求,并应用了一个或多个实例操作
四、3xx 重定向(Redirection)
这类状态码表示客户端需要进行额外操作才能完成请求。
300 Multiple Choices
- 含义:多种选择
- 说明:请求的资源有多个表示形式,客户端可以选择其中一个
- 使用场景:资源有多种语言或格式版本
301 Moved Permanently
- 含义:永久移动
- 说明:请求的资源已永久移动到新的URI
- 使用场景:网站域名变更、URL结构永久调整
- 注意:搜索引擎会将旧URL的权重转移到新URL
302 Found
- 含义:临时移动
- 说明:请求的资源临时移动到新的URI
- 使用场景:临时页面跳转、登录后跳转
- 注意:搜索引擎不会转移权重,旧URL仍然有效
303 See Other
- 含义:查看其他位置
- 说明:服务器返回此状态码,指示客户端使用GET方法请求另一个URI
- 使用场景:POST请求成功后,重定向到结果页面
- 注意:与302的区别是,303明确要求使用GET方法请求新URI
304 Not Modified
- 含义:未修改
- 说明:资源自上次请求后未发生变化
- 使用场景:客户端发送条件请求(
If-Modified-Since或If-None-Match)时,资源未修改 - 注意:响应体必须为空,响应头中应包含缓存相关信息
305 Use Proxy
- 含义:使用代理
- 说明:请求的资源必须通过指定的代理访问
- 使用场景:强制使用代理访问资源
- 注意:出于安全考虑,许多浏览器不支持此状态码
306 Switch Proxy
- 含义:切换代理
- 说明:已废弃,不再使用
307 Temporary Redirect
- 含义:临时重定向
- 说明:与302类似,但要求客户端保持请求方法不变
- 使用场景:POST请求的临时重定向
- 注意:与302的区别是,307不允许将POST请求改为GET请求
308 Permanent Redirect
- 含义:永久重定向
- 说明:与301类似,但要求客户端保持请求方法不变
- 使用场景:POST请求的永久重定向
- 注意:与301的区别是,308不允许将POST请求改为GET请求
五、4xx 客户端错误(Client Error)
这类状态码表示客户端发送的请求有错误,服务器无法处理。
400 Bad Request
- 含义:错误请求
- 说明:服务器无法理解请求的语法
- 使用场景:请求参数格式错误、请求体格式错误、请求头缺失
401 Unauthorized
- 含义:未授权
- 说明:请求需要用户身份验证
- 使用场景:访问需要登录的资源但未登录
- 注意:响应头中必须包含
WWW-Authenticate字段,指示认证方式
402 Payment Required
- 含义:需要付款
- 说明:保留状态码,目前未广泛使用
- 使用场景:未来可能用于数字支付系统
403 Forbidden
- 含义:禁止访问
- 说明:服务器理解请求,但拒绝执行
- 使用场景:权限不足、IP被封禁、访问被禁止的资源
- 注意:与401的区别是,403表示身份验证已通过,但没有访问权限
404 Not Found
- 含义:未找到
- 说明:服务器找不到请求的资源
- 使用场景:URL错误、资源已被删除
405 Method Not Allowed
- 含义:方法不允许
- 说明:请求的方法不被服务器支持
- 使用场景:对只读资源使用POST方法
- 注意:响应头中应包含
Allow字段,列出支持的方法
406 Not Acceptable
- 含义:不可接受
- 说明:服务器无法生成客户端可接受的响应内容
- 使用场景:客户端
Accept头要求的内容类型服务器无法提供
407 Proxy Authentication Required
- 含义:需要代理身份验证
- 说明:客户端必须先通过代理服务器的身份验证
- 使用场景:访问需要认证的代理服务器
- 注意:响应头中必须包含
Proxy-Authenticate字段
408 Request Timeout
- 含义:请求超时
- 说明:服务器等待客户端发送请求的时间过长
- 使用场景:客户端网络缓慢、请求体过大
409 Conflict
- 含义:冲突
- 说明:请求与服务器上的资源状态冲突
- 使用场景:并发编辑冲突、创建已存在的资源
410 Gone
- 含义:已永久删除
- 说明:请求的资源已永久删除,且不会再恢复
- 使用场景:资源被永久删除
- 注意:与404的区别是,410明确表示资源已永久删除
411 Length Required
- 含义:需要内容长度
- 说明:服务器要求请求包含
Content-Length头 - 使用场景:POST请求没有指定
Content-Length头
412 Precondition Failed
- 含义:前提条件失败
- 说明:客户端请求头中的前提条件不满足
- 使用场景:条件请求(
If-Match、If-Unmodified-Since)失败
413 Payload Too Large
- 含义:请求体过大
- 说明:请求体的大小超过了服务器能够处理的限制
- 使用场景:上传文件过大
414 URI Too Long
- 含义:URI过长
- 说明:请求的URI长度超过了服务器能够处理的限制
- 使用场景:GET请求参数过多导致URL过长
415 Unsupported Media Type
- 含义:不支持的媒体类型
- 说明:请求的媒体类型不被服务器支持
- 使用场景:上传文件的格式不被服务器接受
416 Range Not Satisfiable
- 含义:范围不满足
- 说明:客户端请求的字节范围无效
- 使用场景:断点续传时请求的范围超出了资源的实际大小
417 Expectation Failed
- 含义:期望失败
- 说明:服务器无法满足
Expect请求头的要求 - 使用场景:客户端发送
Expect: 100-continue,但服务器拒绝继续
418 I’m a teapot
- 含义:我是一个茶壶
- 说明:愚人节玩笑状态码,由RFC 2324定义
- 使用场景:幽默用途,不用于实际生产环境
421 Misdirected Request
- 含义:错误定向的请求
- 说明:请求被发送到无法产生响应的服务器
- 使用场景:HTTP/2连接复用导致的请求错误
422 Unprocessable Entity
- 含义:无法处理的实体
- 说明:请求格式正确,但语义错误
- 使用场景:JSON格式正确,但缺少必要字段或字段值无效
- 注意:RESTful API中常用此状态码表示参数验证失败
423 Locked (WebDAV)
- 含义:已锁定
- 说明:请求的资源被锁定
- 使用场景:WebDAV资源被其他用户锁定
424 Failed Dependency (WebDAV)
- 含义:依赖失败
- 说明:由于前一个请求失败,导致当前请求失败
- 使用场景:WebDAV的依赖操作
425 Too Early
- 含义:太早
- 说明:服务器不愿意处理可能被重放的请求
- 使用场景:TLS早期数据(Early Data)的安全防护
426 Upgrade Required
- 含义:需要升级
- 说明:服务器要求客户端升级到更高版本的协议
- 使用场景:强制使用HTTPS、强制使用HTTP/2
428 Precondition Required
- 含义:需要前提条件
- 说明:服务器要求请求包含条件头
- 使用场景:防止"丢失更新"问题,要求客户端使用
If-Match或If-Unmodified-Since
429 Too Many Requests
- 含义:请求过多
- 说明:客户端在给定时间内发送了过多的请求
- 使用场景:API限流、防爬虫
- 注意:响应头中应包含
Retry-After字段,指示客户端等待多长时间后重试
431 Request Header Fields Too Large
- 含义:请求头字段过大
- 说明:请求头的大小超过了服务器能够处理的限制
- 使用场景:Cookie过大、自定义请求头过多
451 Unavailable For Legal Reasons
- 含义:因法律原因不可用
- 说明:由于法律原因,服务器拒绝提供资源
- 使用场景:版权问题、政府审查
六、5xx 服务器错误(Server Error)
这类状态码表示服务器在处理请求过程中发生了错误。
500 Internal Server Error
- 含义:内部服务器错误
- 说明:服务器遇到了意外情况,无法完成请求
- 使用场景:服务器代码bug、数据库连接失败、配置错误
- 注意:这是最常见的服务器错误状态码
501 Not Implemented
- 含义:未实现
- 说明:服务器不支持请求的功能
- 使用场景:服务器不支持请求的HTTP方法
502 Bad Gateway
- 含义:网关错误
- 说明:作为网关或代理的服务器,从上游服务器收到了无效的响应
- 使用场景:反向代理服务器无法连接到后端应用服务器
503 Service Unavailable
- 含义:服务不可用
- 说明:服务器暂时无法处理请求
- 使用场景:服务器维护、服务器过载、流量高峰
- 注意:响应头中应包含
Retry-After字段,指示客户端等待多长时间后重试
504 Gateway Timeout
- 含义:网关超时
- 说明:作为网关或代理的服务器,没有及时从上游服务器收到响应
- 使用场景:后端应用服务器处理时间过长、网络延迟
505 HTTP Version Not Supported
- 含义:HTTP版本不支持
- 说明:服务器不支持请求中使用的HTTP版本
- 使用场景:客户端使用了服务器不支持的HTTP/3版本
506 Variant Also Negotiates
- 含义:变体也协商
- 说明:服务器内部配置错误,导致内容协商循环
507 Insufficient Storage (WebDAV)
- 含义:存储空间不足
- 说明:服务器无法存储完成请求所需的内容
- 使用场景:WebDAV服务器磁盘空间不足
508 Loop Detected (WebDAV)
- 含义:检测到循环
- 说明:服务器在处理请求时检测到无限循环
510 Not Extended
- 含义:未扩展
- 说明:服务器需要进一步扩展才能满足请求
511 Network Authentication Required
- 含义:需要网络身份验证
- 说明:客户端需要进行网络身份验证才能访问网络
- 使用场景:公共Wi-Fi登录页面
七、非标准但广泛使用的状态码
499 Client Closed Request
- 含义:客户端关闭请求
- 说明:Nginx扩展状态码,表示客户端在服务器响应之前关闭了连接
- 使用场景:客户端网络中断、用户主动取消请求
520 Unknown Error
- 含义:未知错误
- 说明:Cloudflare扩展状态码,表示上游服务器返回了未知错误
521 Web Server Is Down
- 含义:Web服务器已关闭
- 说明:Cloudflare扩展状态码,表示无法连接到上游服务器
522 Connection Timed Out
- 含义:连接超时
- 说明:Cloudflare扩展状态码,表示与上游服务器的连接超时
523 Origin Is Unreachable
- 含义:源站不可达
- 说明:Cloudflare扩展状态码,表示无法到达上游服务器
524 A Timeout Occurred
- 含义:发生超时
- 说明:Cloudflare扩展状态码,表示与上游服务器的连接成功,但响应超时
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)