HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。
状态码的类别:
记录在RFC2616上的HTTP状态码有40种,再加上WebDAV等的扩展,数量达到了60余种,但是实际上经常使用的只有14种,接下来介绍下具有代表性的这14个状态码。
1、200 OK 表示请求已正常处理。
2、204 No Content 表示请求处理成功,但没有资源可返回。
3、206 Partial Content 表示客户端进行了范围请求,服务器执行了这部分的GET请求。Content-Range指定响应的范围。
4、301 Moved Permanently 表示请求的资源已被分配了新的URI,以后应使用新的URI(永久性重定向)。
5、302 Found 表示请求的资源已被分配了新的URI,希望本次请求使用新的URI(临时性重定向)。
6、303 See Other 表示请求的资源已被分配了新的URI,希望本次请求使用新的URI,并且使用GET方法获取请求的资源。
注:当返回301、302、303响应状态码时,几乎所有的浏览器都会把POST改成GET,并删除请求报文内的主体,之后请求会自动再次发送。
301、302标准是禁止将POST方法改变成GET方法的,但实际上大家都没按照这样来,所以直接使用303响应是最理想的。
7、304 Not Modified 表示客户端发送附带条件的请求时,服务器允许请求访问资源,但是未满足条件。不返回响应体,和重定向没有关系。
注:附带条件是指采用GET方法的请求报文中包含If-Match,If-Modified-Since,If-None-Match,If-Range,If-UnModified-Since中任一首部。
8、307 Temporary Redirect 表示临时重定向,和302相同。
9、404 Bad Request 表示请求报文中存在语法错误。
注:浏览器会像对待200 OK 一样对待该状态码。
10、401 Unauthorized 表示发送的请求需要通过HTTP认证,如果这是第二次返回401,则表示认证失败。
11、403 Forbidden 表示请求被服务器拒绝。
12、404 Not Found 表示服务器上无法找到请求的资源。
13、500 Internal Server Error 表示服务器端在执行请求时发生了错误。
14、503 Service Unavailable 表示服务器忙,无法处理请求。可能是服务器暂时处于超负载或正在进行停机维护。