目录

🍎 HTTP 常见的状态码

相关问题:

  • HTTP 常见的状态码有哪些?
  • HTTP 状态码的种类?
  • HTTP 状态码的应用场景?

# HTTP 状态码的概念

HTTP 状态码,用于表示网页服务器超文本传输协议响应状态的 3 位数字代码。作用是 服务器告诉客户端当前请求的响应状态,通过状态码能判断和分析服务器的运行状态。

状态码由第一位开头数字分类:

  • 1** 表示消息
  • 2** 表示成功
  • 3**表示重定向
  • 4**表示请求错误
  • 5**表示服务器错误

# 1**

请求已被接收,需要继续处理。一般是 临时相应,只包状态行和某些可选的响应头信息,并且以空行结束。

常见的 1** 的状态码有:

  • 100 :客户端继续发送请求。临时响应,用于通知客户端发送的部分请求已经被服务器接收,且未被拒绝,客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个相应。服务器必须在请求完成之后向客户端发送一个最终响应。
  • 101 :服务器根据客户端的请求切换协议。例如 WebSocket 或者 HTTP 2 的升级。

# 2**

代表 请求已经被服务器成功接收、理解。

常见的 2** 的状态码有:

  • 200 :请求成功,并且请求所希望的响应的数据体随此响应返回。
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206

# 3**

代表要完成请求,需要进一步的操作,用来重定向。

常见的 3** 的状态码有:

  • 300 (多种选择):针对请求,服务器可以执行多种操作。服务器可以根据客户端的 UserAgent 选择一项操作或者提供操作列表供请求者选择。

# 4**

代表 客户端可能发生了错误,妨碍了服务器端的处理。

常见的 4** 的状态码有:

  • 400 错误请求:服务器不理解请求的语法;
  • 401 未授权:请求要求身份认证;
  • 403 禁止:服务器拒绝响应请求
  • 404 未找到:服务器找不到请求的网页
  • 405 方法禁用:禁用请求中指定的方法;
  • 406 不接受:无法使用请求的内容特性响应请求的网页;
  • 407 需要代理授权:与 401 相似,指定请求者应当授权使用代理;
  • 408 请求超时:服务器等待请求发生超时。

# 5**

代表 服务器无法完成明显有效的请求,服务器在处理请求时有错误或者异常状态发生。

  • 500 服务器内部错误:服务器处理请求时遇到错误,无法完成请求;
  • 501 尚未实施:服务器不具备完成该请求的功能。例如,服务器无法识别该请求方法时。
  • 502 错误网关:服务器作为网关或者代理,从上游服务器收到无效响应。
  • 503 服务不可用:服务器目前无法使用(由于超载或者停机维护)。
  • 504 网关超时:服务器作为网关或者代理,但是没有及时从上游服务器中收到响应。
  • 505 HTTP 协议版本不可用:服务器不支持请求中所使用的 HTTP 协议的版本。

# 常用应用场景

  • 100 :客户端在发送 POST 数据给服务器前,征询服务器情况,看服务器是否处理 POST 的数据,如果不处理,客户端则不上传 POST 数据,如果处理,则 POST 上传数据。常用于 POST 大数据传输
  • 206 :一般用作断点续传,或者是视频文件等大文件的加载
  • 301 :永久重定向会缓存。新域名替换旧域名,旧的域名不再使用时,用户访问旧域名时就使用 301 重定向到新的域名
  • 302 :临时重定向不会缓存,常用于未登录的用户访问用户中心重定向到登录页面。
  • 304 :协商缓存,告诉客户端有缓存,直接使用缓存中的数据,返回页面的只有头部信息,是没有内容部分。
  • 400 :请求参数有误,请求无法被服务器识别。
  • 403 :客户端禁止访问该站或者资源。内网 / 外网资源。
  • 404 :服务器找不到资源。
  • 503 :服务器停机维护时。
  • 504 :网关超时。

# 相关问题

# 301302 的区别

  • 301 Moved Permanently 表示被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。

  • 302 Found 请求的资源现在临时从不同的 URI 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在 Cache-ControlExpires 中进行了指定的情况下,这个响应才是可缓存的。

    字面上的区别就是 301 是永久重定向,而 302 是临时重定向。

# 参考

📢 上次更新: 2022/09/02, 10:18:16