⼀、是什么
HTTP
状态码(英语:
HTTP Status Code
),⽤以表示⽹⻚服务器超⽂本传输协议响应状态的
3
位数字代码
简单来讲,
http
状态码的作⽤是服务器告诉客户端当前请求响应的状态,通过状态码就能判断和分析服务器的运⾏状态
⼆、分类
状态码第⼀位数字决定了不同的响应状态,有如下:
1
表示消息
2
表示成功
3
表示重定向
4
表示请求错误
5
表示服务器错误
1xx
代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束
常见的有:
100
(客户端继续发送请求,这是临时响应):这个临时响应是用来通知客户端它的部分请求已经
被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽
略这个响应。服务器必须在请求完成后向客户端发送⼀个最终响应
101
:服务器根据客户端的请求切换协议,主要用于
websocket
或
http2
升级
2xx
代表请求已成功被服务器接收、理解、并接受
常见的有:
200
(成功):请求已成功,请求所希望的响应头或数据体将随此响应返回
201
(已创建):请求成功并且服务器创建了新的资源
202
(已创建):服务器已经接收请求,但尚未处理
203
(非授权信息):服务器已成功处理请求,但返回的信息可能来⾃另⼀来源
204
(⽆内容):服务器成功处理请求,但没有返回任何内容
205
(重置内容):服务器成功处理请求,但没有返回任何内容
206
(部分内容):服务器成功处理了部分请求
3xx
表示要完成请求,需要进⼀步操作。 通常,这些状态代码⽤来重定向
常见的有:
300
(多种选择):针对请求,服务器可执行多种操作。 服务器可根据请求者
(user agent)
选择⼀
项操作,或提供操作列表供请求者选择
301
(永久移动):请求的网页已永久移动到新位置。 服务器返回此响应(对
GET
或
HEAD
请求
的响应)时,会自动将请求者转到新位置
302
(临时移动): 服务器⽬前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行
以后的请求
303
(查看其他位置):请求者应当对不同的位置使用单独的
GET
请求来检索响应时,服务器返回
此代码
305 (使⽤代理): 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求
者应使用代理
307 (临时重定向): 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求
4xx
代表了客户端看起来可能发⽣了错误,妨碍了服务器的处理
常见的有:
400
(错误请求): 服务器不理解请求的语法
401(未授权): 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
403
(禁止): 服务器拒绝请求
404(未找到): 服务器找不到请求的网页
405
(方法禁⽤): 禁用请求中指定的⽅法
406(不接受): ⽆法使⽤请求的内容特性响应请求的网页
407
(需要代理授权): 此状态代码与
401
(未授权)类似,但指定请求者应当授权使用代理
408
(请求超时): 服务器等候请求时发⽣超时
5xx
表示服务器⽆法完成明显有效的请求。这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发⽣
常见的有:
500
(服务器内部错误):服务器遇到错误,⽆法完成请求
501
(尚未实施):服务器不具备完成请求的功能。 例如,服务器⽆法识别请求方法时可能会返回
此代码
502(错误网关): 服务器作为网关或代理,从上游服务器收到⽆效响应
503
(服务不可用): 服务器目前无法使用(由于超载或停机维护)
504(网关超时): 服务器作为网关或代理,但是没有及时从上游服务器收到请求
505
(
HTTP
版本不受支持): 服务器不支持请求中所用的
HTTP
协议版本
三、适⽤场景
下⾯给出⼀些状态码的适⽤场景:
100
:客户端在发送
POST
数据给服务器前,征询服务器情况,看服务器是否处理
POST
的数据,如
果不处理,客户端则不上传
POST
数据,如果处理,则
POST
上传数据。常用于
POST大
数据传输
206
:⼀般⽤来做断点续传,或者是视频⽂件等大文件的加载
301
:永久重定向会缓存。新域名替换旧域名,旧的域名不再使⽤时,用户访问旧域名时用
301
就
重定向到新的域名
302
:临时重定向不会缓存,常用于未登陆的用户访问用户中心重定向到登录页面
304:协商缓存,告诉客户端有缓存,直接使⽤缓存中的数据,返回页面的只有头部信息,是没有
内容部分
400
:参数有误,请求无法被服务器识别
403
:告诉客户端进制访问该站点或者资源,如在外网环境下,然后访问只有内网
IP
才能访问的时
候则返回
404
:服务器找不到资源时,或者服务器拒绝请求又不想说明理由时
503
:服务器停机维护时,主动⽤
503
响应请求或
nginx
设置限速,超过限速,会返回
503
504
:网关超时