状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。
借助状态码,我们可以知道服务器端是正常处理了请求,还是出现了问题。
我们先来看一个图:
1XX
Informational信息性状态码
原因短语:接收的请求正在处理
由于 HTTP/1.0 协议中没有定义任何 1xx 状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送 1xx 响应。
2XX 成功
Success成功状态码
2XX的响应结果表明请求被正常处理了。
- 200 OK
表示从客户端发来的请求在服务器端被正常处理了。 - 204 No Content
该状态码表示服务器接收的请求已成功处理,但是返回的响应报文中不含实体的主体部分。
一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用。 - 206 Partial Content
表示客户端进行了范围请求。而服务器端成功执行了这部分的请求。响应报文中包含由Content-Range指定范围的实体内容。
3XX重定向
301 Move Permanently
永久重定向
表示,请求的资源已被分配到新的URI,以后应使用资源现在所指的URI。
注意:对于某些使用 HTTP/1.0 协议的浏览器,当它们发送的 POST 请求得到了一个301响应的话,接下来的重定向请求将会变成 GET 方式。302 Found
临时重定向
表示,请求的资源已被分配到新的URI,希望用户本次使用新的URI303 See Other
该状态码表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。(明确GET方法,其他与302相同)304 Not Modified
表示请求成功,但是内容没有改变。服务器资源未改变,可直接使用客户端未过期的缓存。
304状态码返回时,不包含任何响应的主体部分。
特别需要注意的一点是,虽然304状态码被划分在重定向3XX类别中,但是其跟重定向并没有什么关系。
搜索引擎会根据304状态码来判断页面是否产生变化,来决定是否需要抓取。如果页面有太多的304,并不利于SEO。307 Temporary Redirect
临时重定向。该状态码有着和302Found相同的含义。
4XX客户端错误
400 Bad Request
表示请求报文中存在语法错误。需要修改请求内容再重新发送。401 Unauthorized
表示发送的请求需要通过HTTP认证的认证信息。另外,若之前已经进行过一次请求,则表示用户认证失败。403 Forbidden
表示请求资源的访问被服务器拒绝。未获得文件系统的访问授权,访问权限出现问题等列举的情况都可能产生403404 Not Found
该状态码表示服务器上无法找到请求的资源。此外,也可以在服务器端拒绝请求且不想说明理由时使用。
5XX 服务器错误
500 Internal Server Error
表示服务器端在执行请求时发生了错误。503 Service Unavailable
表示服务器暂时处于超负荷或者正在进行停机维护,现在无法处理请求。
如果提前知道这个情况,最好写入Retry-After首部字段返回给客户端。
需要注意的是:状态码和真实状况不一致的情况,时有发生!
本文整理自《图解HTTP》和网络,之后将持续进行完善