# HTTP 状态码

RFC 规定 HTTP 状态码为三位数,分为五类:

  • 1XX: 表示目前是协议处理的中间状态,还需要后续操作
  • 2XX: 表示成功状态
  • 3XX: 重定向状态,资源位置发生变动,需要重新请求
  • 4XX: 请求报文有误
  • 5XX: 服务器端发生错误

# 1XX

  1. 101:Switching Protocols:在 HTTP 升级为 WebSocket 的时候,如果服务器同意变更,就会发送状态码 101

# 2XX

  1. 200:请求已成功,通常在响应体中放有数据

考了双百,感觉非常 OK

  1. 204:No Content 含义与 200 相同,但是响应头后没有 body 数据
  2. 206:Partial Content 表示部分内容,使用场景是 HTTP 分块下载和断点续传,会带上相应的响应头字段 Content-Range

# 3XX

3 就是闪了的意思 -> 重定向

  1. 301:Moved Permanently 永久重定向
  2. 302:临时重定向,请求成功但是被重定向(例如登录鉴权)
  3. 303:临时重定向,表示客户端当前应采用 GET 方法获取资源,POST 请求会变为 GET 请求进行重定向
  4. 304:Not Modified,当协商缓存命中时会返回这个状态码
  5. 305:Use Proxy,请求的资源必须通过指定的代理才能被访问
  6. 307:临时重定向,不会从 POST 变为 GET

如果网站从 HTTP 升级到 HTTPS,以前的站点不能再使用了,应该返回 301,浏览器默认会做缓存优化,在第二次访问的时候自动访问重定向的那个地址
如果只是暂时不用,直接返回 302,和 301 不同的是,浏览器不会做缓存优化

# 4XX

4 你这个请求似不似有问题

  1. 400:Bad Request
  • 语义有误,当前请求无法被服务器理解,除非进行修改,否则客户端不应该重复提交这个请求
  • 请求参数有误
  1. 403:Forbidden,服务器已经理解请求,但拒绝执行它,原因有很多,比如法律禁止、信息敏感

闪开,你不配获得它

  1. 404:Not Found,资源未找到,表示未在服务器上找到相应的资源

不是,没有,什么网页,不存在的

  1. 405:Method Not Allowed:请求方法不被服务端允许
  2. 408:Request Timeout,请求超时,客户端没有在服务器预备等待的时间内完成一个请求的发送
  3. 409:Conflict:多个请求发生了冲突

# 5XX

5 我的锅

  1. 500:Internal Server Error:服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理,一般错误出现在服务端源码
  2. 501:Not Implemented,表示客户端请求的功能还不支持
  3. 502:Bad Gateway,服务器自身是正常的,但是访问的时候出错了
  4. 503:Service Unavailable,表示临时的服务器维护或过载,暂时无法响应服务
  5. 504:Gateway Timeout,服务器作为网关或代理,但是没有及时从上游服务器收到请求
Last Updated: 5/6/2020, 11:48:16 AM