江西雨林听声网络科技有限公司

常见HTTP状态码详解_seo岗位权限

日期:2025-02-03 00:00 / 作者:网络

常见HTTP状态码详解

一、基本概念

HTTP状态码(HTTP Status Code)是通过三位数字标识网页服务器响应状态的编码体系,由RFC 2616规范定义,并经RFC 2518、RFC 2817等多份扩展文档补充完善。所有状态码的首位数字代表五大响应类别之一。

二、信息性状态(1字头)

此类响应属临时性质,仅包含状态行及部分可选响应头,最终以空行收尾。需注意,因HTTP/1.0协议未定义1xx状态码,除特定测试场景外,服务器通常不会向普通客户端发送此类响应。

客户端需继续发送请求。该临时响应用于告知客户端部分请求已被服务器接收且未被拒绝,若请求已完整则可忽略此响应,待请求完成后服务器将返回最终应答。

服务器已理解客户端请求,并将通过`Upgrade`消息头通知客户端切换协议完成请求。仅在切换至更优协议(如更高版本HTTP或实时同步协议)时适用。

由WebDAV(RFC 2518)扩展,表明请求处理将持续进行。

三、成功响应(2字头)

此类状态码表示请求已被服务器成功接

收、解析并接受。

请求处理成功,响应头或数据体将随此响应返回。

请求已实现,且已按请求要求成功创建新资源,其URI通过`Location`头信息返回。若资源暂无法创建,应返回"202 Accepted"。

服务器接收请求但未完成处理。适用于异步操作场景,允许服务器接收其他任务(如每日批处理),无需保持客户端连接直至处理完成。响应实体需包含处理状态信息及状态监控入口,便于用户评估进度。

服务器成功处理请求,但返回的实体元信息非原始服务器确认的最终版本,可能来自本地或第三方拷贝(可能是原始数据的子集或超集)。仅在响应不使用200 OK时适用。

服务器成功处理请求但无需返回实体内容,可能更新元信息。若客户端为浏览器,页面视图不会变化(即使元信息需应用)。此类响应禁止包含消息体,以空行结束。

服务器成功处理请求且无内容返回,但要求客户端重置文档视图(如清空表单)。与204响应一致,禁止包含消息体,以空行结束。

由WebDAV(RFC 2518)扩展,表明响应体为XML格式,可能包含多个子请求的独立状态码。

四、重定向响应(3字头)

此类状态码表示需客户端进一步操作完成请求,重定向目标通常在`Location`头中指定。仅当后续请求为GET或HEAD时,浏览器可自动重定向(避免无限循环,建议不超过5次)。

目标资源已完成永久迁移,未来引用应使用响应中的URI之一。若可能,支持链接编辑的客户端应自动修改请求地址为`Location`值(默认可缓存)。新URI应在`Location`中返回,非HEAD请求的响应实体需包含指向新URI的超链接及说明。注意:部分HTTP/1.0浏览器对POST请求返回301时,后续重定向会转为GET。

当前请求的响应可在另一URI获取,客户端应使用GET访问该资源。此状态用于允许脚本触发的POST请求重定向至新资源(新URI非原资源替代引用),且禁止缓存(但重定向后的请求可能被缓存)。新URI应在`Location`中返回,非HEAD请求的响应实体需包含超链接及说明。

被请*需通过指定代理访问,`Location`头包含代理URI。仅原始服务器可发送此状态码,错误使用可能导致安全问题。

五、客户端错误(4字头)

此类状态码表示客户端可能出错,影响服务器处理。除非为HEAD请求,服务器应返回解释错误状态(临时或永久)的实体,浏览器需显示响应内容。若客户端传输数据时出错,服务器应确保关闭连接前客户端收到错误数据包;若客户端继续发送数据,服务器TCP栈将发送重置包清除未识别输入。

1. 请求语义错误,服务器无法理解(除非修改否则不应重复提交);2. 请求参数有误。

预留状态码,用于未来需求。

服务器理解请求但拒绝执行(与401不同,身份验证无帮助,不应重复提交)。若非HEAD请求且需说明原因,响应实体应描述拒绝理由(也可返回404隐藏信息)。

客户端请求的资源在服务器端未找到。无明确信息表明是临时或永久状态(若服务器已知永久不可用,应使用410)。常见于服务器无对应页面。

请求行指定的方法不适用于目标资源,响应必须包含`Allow`头列出资源支持的方法。因PUT/DELETE等方法涉及写操作,多数网页服务器默认不支持(返回405)。

请求超时,客户端未在服务器等待时间内完成发送。客户端可随时重新提交请求(无需修改)。

请求与资源当前状态冲突,无法完成(用户应能解决冲突并重新提交)。常见于PUT请求(如版本检查时提交的版本与第三方请求冲突),响应实体可能包含冲突版本的差异比较,便于用户提交合并后的新版本。

被请*永久不可用且无已知转发地址(区别于404的未知状态)。支持链接编辑的客户端应获用户许可后删除指向此地址的引用(若服务器不确定是否永久,应使用404)。410用于网站维护(如限时服务过期)或通知用户个人资源不可用(是否长期标记由服务器决定)。

服务器验证请求头中的先决条件未满足,允许客户端通过请求头设置先决条件避免方法应用于非目标资源。

请求URI长度超服务器解析范围(常见于GET表单误用为POST导致查询字符串过长、重定向URI“黑洞”或客户端攻击)。

请求实体格式不被服务器支持(针对当前方法及资源)。

请求头`Expect`指定的预期内容服务器无法满足(或代理服务器确认下游节点无法满足)。

客户端IP到服务器的连接数超服务器许可范围(IP指服务器视角的客户端地址,可能涉及网关/代理)。

请求格式正确但含语义错误(RFC 4918 WebDAV)。

当前资源被锁定(RFC 4918 WebDAV)。

因先前请求错误(如PROPPATCH)导致当前请求失败(RFC 4918 WebDAV)。

客户端需切换至TLS/1.0(RFC 2817)。

微软扩展状态码,指示请求需执行适当操作后重试。

六、服务器错误(5字头)

此类状态码表示服务器处理请求时出错或异常(或因资源不足无法完成)。除非为HEAD请求,服务器应包含解释错误状态(临时或永久)的实体,浏览器需显示响应内容。

服务器因未预期状况无法处理请求(常见于服务器端代码错误)。

服务器不支持请求所需功能(无法识别请求方法或支持任何资源的该请求)。

作为网关/代理的服务器从上游服务器接收无效响应。

作为网关/代理的服务器未及时从上游服务器(如HTTP/FTP/DNS)或辅助服务器(如DNS)收到响应(部分代理在DNS超时时返回400或500)。

服务器不支持或拒绝支持请求使用的HTTP版本(暗示无法与客户端使用相同版本),响应需说明不支持原因及服务器支持的协议。

由《透明内容协商协议》(RFC 2295)扩展,指服务器内部配置错误(被请求的协商资源配置为自身,无法作为协商重点)。

服务器无法存储完成请求所需内容(临时状态,WebDAV规范)。

非官方状态码,广泛用于表示服务器达带宽限制。

获取资源所需策略未满足(RFC 2774)。