chenxiaochun/blog

图解HTTP之HTTP状态码

chenxiaochun opened this issue · 0 comments

状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。

状态码的类别:

类别 类别说明 原因说明
1XX Informational(信息性状态码) 接收的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求
5XX Server Error(服务器错误状态) 服务器处理请求出错

2XX 成功

  • 200 OK
    表示从客户端发来的请求在服务器端被正常处理了。
    在响应报文内,随状态码一起返回的信息会因方法的不同而发生改变。比如使用GET方法时,对应请求的实体会作为响应返回;而使用HEAD方法时,对应请求资源的实体就不会随报文主体作为响应返回。

  • 204 No Content
    表示服务器端接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分,而且也不允许返回任何实体的主体。当从浏览器发出请求处理后,返回204响应,那么浏览器显示的页面不发生更新。
    一般在只需要从客户端往服务器发送信息,而不需要服务器端返回新信息内容的情况下使用。

  • 206 Partial Content
    表示客户端进行了范围请求,而且服务器成功执行了这部分的GET请求,响应报文中包含由Content-Range指定范围的实体内容。

3XX 重定向

  • 301 Moved Permanently
    永久性重定向。表示请求的资源已经被分配了新的URI,以后应使用资源现在所指的URI。

  • 302 Found
    临时性重定向。表示请求的资源已经被分配了新的URI,但是希望用户仅仅本次使用的URI访问。

  • 303 See Other
    表示请求的对应资源存在着另一个URI,应使用GET方法定向获取请求的资源。它与302状态码有着相同的功能,但303状态码明确表示客户端应当采用GET方法获取资源,这是它与302状态码的区别。

  • 304 Not Modified
    表示客户端采用GET方法发送的请求报文中包含If-Match、If-Modified-Since、If-None-Match、If-Range、If-Unmodified-Since中的任一首部时,服务器端允许请求访问资源,但未满足条件的情况。

  • 307 Temporary Redirect
    临时重定向。它与302状态有着相同的含义。区别就是:尽管302状态码标准禁止POST变换成GET,但实际时大家并不遵守;307会遵照浏览器标准,不会从POST变成GET。

4XX 客户端错误

  • 400 Bad Request
    表示请求报文中存在语法错误,需要修改请求的内容后再次发送请求。

  • 401 Unauthorized
    表示发送的请求需要通过HTTP认证(BASIC认证、DIGEST认证)信息。返回401状态码的响应信息必须包含一个适用于被请求资源的WWW-Authenticate首部用于询问用户的信息。

  • 403 Forbidden
    表示请求访问的资源被服务器拒绝了。一般原因可能就是未获得文件的访问权限。

  • 404 Not Found
    表示服务器无法找到对应的请求资源。

5XX 服务器错误

  • 501 Internal Server Error
    表示服务器在执行请求时发生错误。也有可能是web应用存在bug或者是某些临时性的故障。

  • 503 Service Unavailable
    表示服务器暂处于超负载或者正在进行停机维护,现在无法处理请求。如果知道以上状态需要持续的时间,可以写入Retry-After首部字段返回给客户端。