HTTP状态码是什么?


HTTP状态码

HTTP 状态码(HTTP Status Code)是一个表示服务器响应状态的 3 位整数代码。比如当服务器收到客户端的某个请求后,服务器会对客户端做出响应,响应中会使用一个数字形式的代码来表示当前响应的状态,这个代码就是 HTTP 状态码。
在这里插入图片描述

状态码使用第一个数字表示响应的类别,一共五种,分别使用 1~5 来表示,状态码的后两位则没有特殊的含义。HTTP 状态码的类别及说明如下表所示。

分类分类描述
1xx信息,表示服务器收到了请求,并且该请求还没有完成,需要请求者继续执行
2xx成功,表示请求被成功接收并处理
3xx重定向,表示需要进一步的操作才能完成请求
4xx客户端错误,表示该请求无法完成或包含语法错误
5xx服务器错误,表示服务器在处理请求的过程中发生了错误

下面来详细介绍一下 HTTP 中的状态码。

1. 消息:1xx

1xx 类型的状态码代表客户端的请求已被服务器接受,但还需要继续处理。这类响应是临时响应,只包含响应行和某些可选的响应头信息,并以空行结束。由于 HTTP/1.0 协议中没有定义 1xx 这一类型的状态码,所以除非在特定的条件下,否则服务器不会向客户端发送 1xx 类型的响应。1xx 类型状态码的具体说明如下表所示:

状态码状态码英文名称中文描述
100Continue表示服务端仅收到了一部分请求,客户端应继续该请求
101Switching Protocols表示服务端已经根据客户端的请求切换了协议版本,注意:只能向更高级的协议版本切换,例如,切换到 HTTP 的新版本协议
102Processing表示服务端已收到并且正在处理这个请求,但暂无响应
103Early Hints表示允许服务端在主响应头之前先发送部分响应头,以达到预加载文件的目的

2. 成功:2xx

2xx 类型的状态码代表客户端的请求已成功被服务端接收,并成功处理了这个请求。2xx 类型状态码的具体说明如下表所示:

状态码状态码英文名称中文描述
200OK表示请求成功
201Created表示请求成功并创建了新的资源
202Accepted表示该请求正在进行处理,但尚未处理完成
203Non-Authoritative Information表示请求成功。但返回的 meta 信息不在原始的服务器,而是一个副本
204No Content表示请求成功,但不需要返回任何响应体
205Reset Content表示请求成功,但没有返回任何响应体。与状态码 204 不同的是,此状态码告诉客户端应立即重置发送此请求的文档视图。比如在用户提交表单后,立即重置表单,以便用再次输入
206Partial Content表示服务端成功处理了部分 GET 请求,像迅雷这类的 HTTP 下载工具就是使用此类响应实现断点续传或者分段下载的
207Multi-Status由 WebDAV(RFC 2518) 扩展的状态码,代表之后的响应体将是一个 XML 消息,并且可能依照之前子请求数量的不同,包含一系列独立的响应代码

3. 重定向:3xx

3xx 类型的状态码代表需要客户端采取进一步的操作才能完成请求。通常这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。

当且仅当后续的请求所使用的方法是 GET 或者 HEAD 时,用户浏览器才可以在没有用户介入的情况下自动提交所需要的后续请求。客户端应当自动监测并避免无限循环的重定向(例如:A->A,或者 A->B->C->A),因为这会导致服务器和客户端资源的消耗。按照 HTTP/1.0 版协议的规范,浏览器重定向得次数不得超过 5 次。

3xx 类型状态码的具体说明如下表所示:

状态码状态码英文名称中文描述
300Multiple Choices表示该请求有多种可能的响应,客户端需要选择其中的一个进行重定向
301Moved Permanently表示请求的资源已永久移动到新的 URL,响应中会包含新的 URL,浏览器会自动重定向到新的 URL,今后任何对该资源的请求都应该使用新的 URL
302Found表示请求的资源被临时移动到新的 URL,与 301 不同,被请求的资源只是临时被移动,后续对该资源的请求还可以使用原 URL
303See Other表示对当前请求的响应可以在另一个 URL 上找到,而且客户端应当采用 GET 的方式访问那个资源
304Not Modified表示所请求的资源(自上次访问)并没有改变时,服务器会返回此状态码,但响应中不会包含响应体,因此客户端可以使用上次请求缓存的资源
305Use Proxy表示所请求的资源必须通过指定的代理才能访问
306Unused在最新版的规范中,该状态码已经被弃用
307Temporary Redirect与 302 类似,表示所请求的资源需要临时从不同的 URL 响应

4. 请求错误:4xx

4xx 类型的状态码代表了客户端可能发生了错误,导致服务器无法完成响应,服务器就会返回一个解释当前错误状况的响应体。这一类状态码适用于任何请求方法(HEAD 请求除外),客户端(浏览器)会自动显示出响应中的响应体,也就是我们常说的错误信息。

4xx 类型状态码的具体说明如下表所示:

状态码状态码英文名称中文描述
400Bad Request客户端请求有语法错误,服务器无法理解
401Unauthorized当前请求需要用户的身份认证
402Payment Required该状态码是为了将来可能的需求而预留的
403Forbidden服务器理解客户端的请求,但是拒绝执行此请求
404Not Found请求失败,服务器无法找到客户端所请求的资源
405Method Not Allowed客户端请求行中使用的请求方法被服务器禁用
406Not Acceptable服务端响应的资源类型与客户端请求头中要求的资源类型不符,客户端无法解析,简单来讲就是,服务器返回的数据客户端解析不了
407Proxy Authentication Required与 401 响应类似,只不过客户端必须在代理服务器上进行身份验证
408Request Time-out请求超时,服务器无法在规定时间内对客户端进行响应
409Conflict由于客户端请求中要执行的操作与服务器中被请求资源的当前状态存在冲突,导致请求无法完成,通常发生在 PUT 请求中
410Gone客户端请求的资源已经不存在,不同于 404,当资源以前有,但现在被永久删除的情况下可以使用 410 状态码
411Length Required服务器无法处理客户端发送的不带 Content-Length 的请求信息
412Precondition Failed服务器在验证客户端请求头中的字段时,有一个或多个不能满足
413Request Entity Too Large客户端请求中,提交的数据大小超过了服务器允许的范围,服务器拒绝处理当前请求
414Request-URI Too Large请求的 URI 长度超过了服务器能够处理的长度,因此服务器拒绝处理该请求
415Unsupported Media Type服务器无法处理客户端请求中附带的媒体格式
416Requested range not satisfiable如果请求中包含了 Range 头部字段,并且 Range 中指定的数据范围与当前资源的可用范围不符,同时请求中又没有定义 If-Range 头部字段,那么服务器就会返回 416 状态码
417Expectation Failed服务器无法满足请求头中 Expect 头部字段的信息
418I’m a teapot状态码 418 是 IETF 在 1998 年愚人节发布的一个玩笑 RFC
421Misdirected Request当客户端的请求过多,超过了服务器能过处理的范围时,返回此状态码
422Unprocessable Entity请求格式正确,但是由于含有语义错误,所以服务器无法响应
423Locked当前资源被锁定
424Failed Dependency由于之前的某个请求发生的错误,导致当前请求失败
425Too Early该请求可能会被“重放”,从而造成潜在的重放攻击,服务器不愿冒险,所以拒绝处理该请求
426Upgrade Required客户端应当切换到 TLS/1.0 协议
449Retry With由微软扩展,代表请求应当在执行完某些操作后进行重试
451Unavailable For Legal Reasons该请求因法律原因不可用

5. 服务器错误:5xx

5xx 类型的状态码代表了服务器在处理请求的过程中出现错误或者发生异常(这些错误或异常是服务器本身造成的,与请求无关),也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理,此时服务器会在响应体中返回一个描述当前错误的解释信息,客户端会直接向用户展示这个响应体。5xx 类型的状态码适用于任何 HTTP 方法。

5xx 类型状态码的具体说明如下表所示:

状态码状态码英文名称中文描述
500Internal Server Error服务器内部错误,无法完成请求
501Not Implemented服务器不支持请求所需要的某个功能,无法完成请求
502Bad Gateway网关或者代理服务器在尝试执行请求时,从远程服务器接收到了一个无效的响应
503Service Unavailable由于服务器维护或者过载,导致当前请求无法处理
504Gateway Time-out充当网关或代理服务器时,未能及时收到远程服务器的响应
505HTTP Version not supported服务器不支持请求中 HTTP 协议的版本,无法完成处理
506Variant Also Negotiates服务器存在内部配置错误
507Insufficient Storage服务器无法存储完成请求所必须的内容
509Bandwidth Limit Exceeded服务器达到带宽限制
510Not Extended不能满足获取资源所需要的要求,还需要进一步扩展
  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梁辰兴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值