最全HTTP 状态码

IT知识
52
0
0
2024-10-14

HTTP状态码是一种标准化的机制,用于服务器向客户端传达请求处理的结果。这些状态码是在HTTP协议中定义的,由三位数字代码组成。每个状态码都传达了不同类型的信息,例如请求成功、重定向、客户端错误或服务器错误等。客户端通过解析服务器响应中的状态码来了解请求的处理情况,并相应地采取适当的行动。HTTP状态码的使用使得客户端和服务器之间的通信更加清晰和可靠。

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。

响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599):

  • 1xx(信息性状态码):表示接收的请求正在处理。
  • 2xx(成功状态码):表示请求正常处理完毕。
  • 3xx(重定向状态码):需要后续操作才能完成这一请求。
  • 4xx(客户端错误状态码):表示请求包含语法错误或无法完成。
  • 5xx(服务器错误状态码):服务器在处理请求的过程中发生了错误。

常见的HTTP状态码的详细解析:

200 OK

  • 含义:请求成功。这个状态码表示服务器已经成功处理了客户端的请求,且返回了请求所需的资源。
  • 示例:当你在浏览器中访问一个网页时,如果服务器成功返回了该网页的内容,就会返回这个状态码。

304 Not Modified

  • 含义:未修改。服务器在收到客户端的请求后发现资源未被修改,因此可以直接使用客户端缓存的版本,从而减少网络流量和加载时间。
  • 示例:当你再次访问一个已经访问过的网页时,如果该网页的内容未发生变化,服务器会返回这个状态码,告诉客户端可以使用缓存的版本。

400 Bad Request

  • 含义:请求错误。服务器无法理解客户端发送的请求,可能是因为请求的语法错误、格式不正确或缺少必要的参数。
  • 示例:当客户端发送了一个无效的请求,比如请求参数缺失或格式不正确时,服务器会返回这个状态码。

404 Not Found

  • 含义:未找到。服务器无法根据客户端的请求找到所请求的资源,通常是因为请求的URL不存在或输入错误。
  • 示例:当你尝试访问一个已经删除或者不存在的网页时,服务器会返回这个状态码。

500 Internal Server Error

  • 含义:服务器内部错误。这个状态码表示服务器在处理请求时发生了不可预料的错误,无法完成请求。
  • 示例:当服务器端程序出现了异常、配置错误或者资源不足时,会返回这个状态码,表示服务器端出现了问题。

状态码

类型

说明

100

继续

请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。

101

切换协议

请求者已要求服务器切换协议,服务器已确认并准备切换。

102

处理中

由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行

状态码

类型

说明

200

成功

服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。

201

已创建

请求成功并且服务器创建了新的资源。

202

已接受

服务器已接受请求,但尚未处理。

203

非授权信息

服务器已成功处理了请求,但返回的信息可能来自另一来源。

204

无内容

服务器成功处理了请求,但没有返回任何内容。

205

重置内容

服务器成功处理了请求,但没有返回任何内容。

206

部分内容

服务器成功处理了部分 GET 请求。

208

已经报告

一个DAV的绑定成员被前一个请求枚举,并且没有被再一次包括。

226

IM Used

服务器已经满足了请求所要的资源,并且响应是一个或多个实例操作应用于当前实例的结果。

状态码

类型

说明

300

多种选择

针对请求,服务器可执行多种操作。服务器可根据请求者选择一项操作,或提供操作列表供请求者选择。

301

永久移动

请求的网页已永久移动到新位置。服务器返回此响应时,会自动将请求者转到新位置。

302

临时移动

服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置进行以后的请求。

303

查看其他位置

请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。

304

未修改

自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。

305

使用代理

请求者只能使用代理访问请求的网页。如果服务器返回此响应,表示请求者应使用代理。

307

临时重定向

服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置进行以后的请求。

308

永久转移

请求和以后的请求都应该被另一个URI地址重新发送。307、308和302、301有相同的表现,但不允许HTTP方法改变

状态码

类型

说明

400

错误请求

服务器不理解请求的语法。

401

未授权

请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。

402

预留

该状态码是为了将来可能的需求而预留的。

403

禁止

服务器拒绝请求。

404

未找到

服务器找不到请求的网页。

405

方法禁用

禁用请求中指定的方法。

406

不接受

无法使用请求的内容特性响应请求的网页。

407

需要代理授权

此状态代码与401(未授权)类似,但指定请求者应当授权使用代理。

408

请求超时

服务器等候请求时发生超时。

409

冲突

服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。

410

已删除

如果请求的资源已永久删除,服务器就会返回此响应。

411

需要有效长度

服务器不接受不含有效内容长度标头字段的请求。

412

未满足前提条件

服务器未满足请求者在请求中设置的其中一个前提条件。

413

请求实体过大

服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。

414

请求的 URI 过长

请求的 URI(通常为网址)过长,服务器无法处理。

415

不支持的媒体类型

请求的格式不受请求页面的支持。

416

请求范围不符合要求

如果页面无法提供请求的范围,则服务器会返回此状态代码。

417

未满足期望值

服务器未满足"期望"请求标头字段的要求。

418

我是一个茶壶

这个代码是在1998年作为传统的IETF April Fools‘ jokes被定义的在RFC2324,超文本咖啡罐控制协议,但是并没有被实际的HTTP服务器实现。RFC指定了这个代码应该是由茶罐返回给速溶咖啡。

419

认证超时

并不是HTTP标注的一部分,419认证超时表示以前的有效证明已经失效了。同时也被用于401未认证的替代选择为了从其它被拒绝访问的已认证客户端中指定服务器的资源。

420

方法失效

不是HTTP的标准,但是被Spring定义在HTTP状态类中当方法失时使用。这个状态码已经不推荐在Spring中使用。

420

提高你的耐心

也不是HTTP标准的一部分,但是被版本1的Twitter搜索和趋势APi返回当客户端的速率被限制的时候。其它的服务提供商可能会使用429太多的请求响应码来代替。

421

连接数超限

从当前客户端所在的IP地址到服务器的连接数超过了服务器许可的最大范围。通常,这里的IP地址指的是从服务器上看到的客户端地址(比如用户的网关或者代理服务器地址)。在这种情况下,连接数的计算可能涉及到不止一个终端用户。

422

请求语义错误

请求格式正确,但是由于含有语义错误,无法响应。(RFC 4918 WebDAV)

423

资源被锁定

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

424

请求失败

由于之前的某个请求发生的错误,导致当前请求失败,例如 PROPPATCH。(RFC 4918 WebDAV)

425

未出现在标准中

在WebDav Advanced Collections 草案中定义,但是未出现在《WebDAV 顺序集协议》(RFC 3658)中。

426

切换到TLS/1.0

客户端应当切换到TLS/1.0。(RFC 2817)

428

需要前置条件

原始服务器需要有条件的请求。当客户端GET一个资源的状态的时候,同时又PUT回给服务器,与此同时第三方修改状态到服务器上的时候,为了避免丢失更新的问题发生将会导致冲突。

429

过多请求

用户已经发送了太多的请求在指定的时间里。用于限制速率。

431

请求头部字段太大

服务器由于一个单独的请求头部字段或者是全部的字段太大而不愿意处理请求。

440

登陆超时

一个微软的扩展,意味着你的会话已经超时。

444

无响应

被使用在Nginx的日志中表明服务器没有返回信息给客户端并且关闭了连接。

449

重试

一个微软的扩展

状态码

类型

说明

450

被Windows家长控制阻塞(微软)

当Windows家长控制打开并且阻塞指定网页的访问时发生。

451

由于法律原因而无效(因特网草稿)

当资源的访问由于法律原因被禁止时使用。例如检查制度或政府强制要求禁止访问。

494

请求头太大(Nginx)

类似于431,但是早在Nginx版本0.9.4中引入(2011年1月21日)。

495

证书错误(Nginx)

当使用SSL客户端证书时出错,用于在日志错误中与4XX和错误页面的重定向进行区分。

496

没有证书(Nginx)

当客户端未提供证书时,用于在日志中与4XX和错误页面的重定向进行区分。

497

HTTP到HTTPS(Nginx)

当原始HTTP请求发送到HTTPS端口时使用,用于在日志中与4XX和错误页面的重定向进行区分。

498

令牌超时或失效(Esri)

由ArcGIS for Server返回,表示令牌超时或失效。

499

客户端关闭请求(Nginx)

当服务器仍在处理请求但连接已被客户端关闭时使用,在Nginx日志中记录,用于表示服务器无法返回状态码。

499

需要令牌(Esri)

由ArcGIS for Server返回,表示需要令牌(如果未提交)。

状态码

类型

说明

500

服务器内部错误

服务器遇到错误,无法完成请求。

501

尚未实施

服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。

502

错误网关

服务器作为网关或代理,从上游服务器收到无效响应。

503

服务不可用

服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。

504

网关超时

服务器作为网关或代理,但是没有及时从上游服务器收到请求。

505

HTTP 版本不受支持

服务器不支持请求中所用的 HTTP 协议版本。

506

内部配置错误

服务器存在内部配置错误,无法完成请求。

507

服务器无法存储内容

服务器无法存储完成请求所必须的内容。这个状况被认为是临时的。

508

发现环路

服务器发现了一个无限的循环档处理请求的时候。

509

带宽限制

服务器达到带宽限制。这不是一个官方的状态码,但是仍被广泛使用。

510

策略未满足

获取资源所需要的策略并没有满足。

511

需要网络授权

客户端需要授权去访问网络。一般用于代理交互中进行网络访问控制。

520

未知错误

服务器返回一个未知的或无法解释的错误。

598

网络读取超时异常

代理服务器后面的网络读取超时。

599

网络连接超时异常

代理服务器后面的网络连接超时。