常用HTTP状态码
HTTP状态码简要地描述了请求返回的状态。
在RFC中记录的HTTP状态码有60+,但是常用的只有十几个,下面对常用的进行一个总结。
状态码类别
在对具体的状态码进行描述前,先要对状态码类别有个了解。
状态码一共有5类,
- 1XX:信息性状态码,表示接收到的请求正在处理
 - 2XX:成功状态码,表示请求成功处理完毕
 - 3XX:重定向状态码,表示客户端需要附加操作才能完成请求
 - 4XX:客户端错误状态码,表示客户端的请求无法被处理
 - 5XX:服务端错误状态码,表示服务端处理请求时出错
 
1XX
2XX
2XX类状态码表示请求被成功处理。
200 OK
请求被正常处理
204 No Content
请求被正常处理,但是响应报文实体不包含任何内容。
当接收到204状态码时,客户端不做任何更新。
这个状态码一般在只需要客户端向服务端发送信息,而客户端不需要新信息时使用。
206 Partial Content
服务端成功处理了客户端的范围请求,响应报文的实体内容是Content-Range指定范围的内容。
3XX
3XX类状态码表示客户端需要执行某些特殊的操作来正确地处理请求。
301 Moved Permanently
永久重定向。请求的资源已经被分配了新的URL,并且以后也使用这个新的URL访问。
新的URL通过响应的Location首都字段指定。
302 Found
临时重定向。请求的资源已经被分配了新的URL,本次使用新的URL访问。
303 See Other
临时重定向。请求的资源存在另一个URL,使用GET方法来定向获取该资源。
和302功能相同,只是明确指定客户端应该使用GET方法获取资源。
304 Not Modified
客户端发送附带条件的请求时,服务端允许请求访问资源,但是因为没有满足条件,返回304(响应报文中不包含实体),表示资源没有改变,可以直接使用缓存。
附带条件的请求指,请求首部指定了If-Match、If-Modified-Since、If-None-Match、If-Range、If-Unmodified-Since中的任意一个。
304虽然被划分到3XX类下,但是和重定向没有关系。
307 Temporary Redirect
临时重定向。和302相同,只是307会严格按照浏览器标准,不会把POST方法改成GET方法。
301和302标准是禁止把POST方法改成GET方法的,但是几乎所有的浏览器都会把POST方法改成GET方法,同时删除请求报文内的主体,然后自动发送请求。
4XX
4XX类状态码表示错误是客户端引起的。
400 Bad Request
请求报文中存在语法错误,需要修改请求内容后再次发送请求。
浏览器会像200一样对待400。
401 Unauthorized
发送的请求需要通过HTTP认证,如果已经发送过一次认证请求,则表示认证失败。
服务器在返回401时,必须在响应中包含WWW-Authenticate首部字段用于质询用户信息。
403 Forbidden
请求被拒绝。服务器没有必要说明拒绝的详细理由,如果需要说明,则把原因作为响应的主体部分返回。
404 Not Found
请求的资源不存在。也可以用于在拒绝请求而不想说明原因时使用。
5XX
5XX类状态码表示服务器本身发生了错误。
500 Internal Server Error
服务端在执行请求时发生错误,也可能是服务端代码存在bug或临时的故障。
503 Service Unavailable
服务器处于超负荷或者正在进行停机维护,暂时无法处理请求。当明确知道可恢复服务时间时,最好添加Retry-After响应首部字段。