基本介绍

 HTTP状态码是服务端负责对客户端请求结果状态的一种表示,通常以附带在报文中返回给客户端。
HTTP状态码能够体现出双方HTTP协议层的通讯状态,告知用户是正常处理还是出现了错误。

 状态码是以三位数字和状态短语组成,数字的第一位能够表明响应类别,后两位是在相应类别的基础上有更详细的解释。

状态码在RFC中有定义,查阅网站如下:https://www.rfc-editor.org

状态码种类繁多,但是常用的一般都很少。基础性类别如下:

状态码第一位 类别 原因短语
1xx informational (信息类状态码) 接受的请求正在处理
2xx success (成功类状态码) 接受的请求处理完成
3xx redirection (重定向类状态码) 需要进行其他“重定向”处理
4xx client error (客户端错误) 服务器无法处理请求
5xx server error (服务端错误) 服务端处理请求错误

本篇只了解部分状态码,其他状态码在https://www.rfc-editor.org 均可查阅。

2XX状态码
200 OK

 200 状态码表示客户端对服务端的请求已经被正常处理了。

状态码均可以通过浏览器按下F12->network查看,也可以通过抓包抓到HTTP包查看。

204 No Content

 204 状态码表示客户端对服务端的处理已经完成,但是返回给客户端的报文中不包含实体的主题部分,比如客户端给服务端传输消息,但服务端不需要给客户端传输新的信息的情况下会返回204状态码。

206 Partial Content

 206 状态码表示客户端对服务端请求部分资源,指定GET的请求方式。

3XX 状态码
301 Moved Permanently

 301 状态码表示永久重定向,表示请求的资源已经被分配了新的URI,客户端应该更新书签引用,下次用新的URI访问。

当访问网页资源路径末尾忘记加上 / 的时候也会产生301状态码

302 Found

 302 状态码表示临时重定向,表示请求的资源分配了新的URI,希望客户端本次能使用最新的URI访问。

303 See Other

 303 状态码和302状态一样,只不过特别要求客户端应该用GET方法对新URI请求。

304 Not Modified

 304 状态码虽然归类在重定向中,但是和重定向没关联,当客户端发送请求有其他附加条件时候,服务端是允许正常请求但是不符合附加条件的时候就会返回304状态码,服务端未返回任何资源,让客户端使用未过期的本地缓存。

307 Temporary Redirect

 307 状态码依然和302一样,但是会遵照标准使用POST方法来请求。

4xx 状态码
400 Bad Request

 400 状态码表示请求的语法出错,需要修改后再次重新请求。

401 Unauthorized

 401 状态码会要求浏览器认证,客户端收到后会弹出认证窗口。

403 Forbidden

 403 状态码表示请求的资源被拒绝。

404 Not Found

 404 状态标识客户端请求的资源不存在,极少数可以是拒绝资源而不想说明。

5xx 状态码
500 Internal Server Error

 500 状态码表示服务端内部出现错误,比如新手管理员更新配置不完整等情况。

503 Service Unavailable

 503 状态码表示服务器超负荷或正在维护中,一般是服务器炸了。

状态码与实际情况

 有时候状态码也会与实际情况不符合,比如404 状态码在文档解释上是客户端错误,但是大部分是由于网站管理员修改或者删除URI后未在上层更新,使得用户点击后出现404的状态。

500状态码也有可能是代理问题引发而来。