HTTP状态码的类别
- HTTP状态码的第一位指定了类别
类别 | 含义 | 已定义的范围 |
---|---|---|
1XX | 接收的请求正在处理 (信息性状态码) | 100 - 101 |
2XX | 请求正常处理完毕 (成功状态码) | 200 - 206 |
3XX | 需要进行附加操作以完成请求 (重定向状态码) | 300 - 305 |
4XX | 服务器无法处理请求 (客户端错误状态码) | 400 - 415 |
5XX | 服务器处理请求出错 (服务器端错误状态码) | 500 - 505 |
- HTTP状态码中一共有14种常用的状态码。
2XX 成功
- 2XX响应结果表示请求被正常处理了。
200 OK
200状态码表示从客户端发来的请求被正常处理了。
204 No Content
204状态码表示请求已被正常处理,但响应报文中不包含资源实体的主体部分。
- 一般在只需要从客户端向服务器端发送消息的而客户端不需要返回新消息的情况下使用。
206 Partial Content
206状态码表示客户端进行了范围请求,而服务器成功处理了请求。
- 客户端进行范围请求会在请求报文的首部加上首部字段Range来指定范围。
- 响应报文中会带有首部字段Content-Range指定范围。
3XX重定向
- 3XX响应结果表示浏览器需要进行某些特殊操作以完成请求。
301 Moved Permanently
301表示永久性重定向,该状态码表示客户端请求的资源已被分配了新的URI,以后应使用新URI访问。
- 响应报文中会包含有首部字段Location指示新的URI。
- 如果浏览器对该资源有书签引用,那么收到301之后,应将书签引用修改为Location重指定的URI。
302 Found (HTTP/1.0)
302表示临时性重定向,该状态码表示请求的资源临时被分配了新的URI,想要浏览器本次以新URI访问资源,但下次访问还是使用旧的URI。
- 响应报文中会包含有首部字段Location指定临时性新URI。
- 302和301的区别在于,302不会修改浏览器中的书签引用。
303 See Other(HTTP/1.1)
303状态码告知客户端应使用另一个URI来获取资源。
- 303具有和302一样的功能,但303告知浏览器应使用GET方法获取资源。
- 响应报文中包含首部字段Location,用来指定新URI。
- 很多浏览器将302状态码视为303状态码(因此引出了307状态码来解决这个问题)。
304 Not Modified
304状态码表示当客户端发送了一个附带要求的请求时,因发生未满足要求的情况,服务器端返回304状态码。
- 比如客户端发送的请求包含首部字段If-Modified-Since,表示获取自某时间之后发生了改变的资源,如果服务器中的资源未发生改变,那么返回304状态码表示客户端可以使用缓存。
- 304状态码的响应报文不包含任何资源实体的主体部分。
307 Temporary Redirect
307状态码表示临时重定向,该状态码和302有相同的含义,主要为了解决尽管302禁止将POST变换成GET,但实际上大家都不遵守的问题。
- 当301、302、303状态码返回时,几乎所有浏览器都会把POST改成GET,并删除报文主体,之后的请求会自动发送。
- 301、302状态码标准是禁止将POST转换成GET的,但大家都不遵守。
- 307状态码会遵守浏览器标,不会将POST变换为GET。
4XX 客户端错误
- 4XX的响应结果表示客户端是发生错误的原因。
400 Bad Request
400状态码表示请求报文中存在语法错误。
401 Unauthorized
401状态码表示请求中需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息。
- 简单的说就是需要用户名和密码。
403 Forbidden
403状态码表示客户端请求的资源不被允许访问,访问请求被拒绝。
404 Not Found
404状态码表示服务器上无法找到请求的资源。
5XX 服务器端错误
- 5XX的响应结果表明服务器本身发生错误。
500 Internal Server Error
500状态码表示服务器在执行请求时发生了错误。
503 Service Unavailable
503状态码表示服务器正处于超负载或正在停机维护,无法处理请求。