HTTP 常用状态码

RFC 标准把状态码分成了五类,用数字的第一位表示分类。从 100-599

  • 1xx:提示信息,表示目前是协议处理的中间状态,还需后续的操作
  • 2xx:成功,报文已经收到并被正确处理
  • 3xx:重定向,资源位置发生变动,需要客户端重新发生请求
  • 4xx:客户端错误,请求报文有误,服务器无法处理
  • 5xx:服务器错误,服务器再处理请求时内部发生了错误

1xx

1xx 类状态码属于提示信息,是协议处理的中间状态,实际能够用到的时候很少。

  1. "101 Switching Protocols" 意思是客户端使用 Upgrade 头字段,要求在 HTTP 协议的基础上改成其他的协议继续通信,比如 WebSocket。而如果服务器也同意变更协议,就会发送状态码 101,但这之后的传输就不会再使用 HTTP 了。

2xx

2xx 类状态码表示服务器收到并成功处理了客户端请求。

  1. "200 OK" 表示处理成功,如果是非 HEAD 请求,通常在响应头后都会有 body 数据

  2. "204 No Content" 与 状态码 200 含义基本相同,但是响应头后没有 body 数据

  3. "206 Partial Content" 是 HTTP 分块下载或断点续传的基础,在客户端发送“范围请求”、要求获取资源的部分数据时出现。也是表示服务器成功处理请求,但 body 里的数据不是资源的全部,而是其中的一部分。

    状态码 206 通常还会伴随着头字段 “Content-Range” ,表示响应报文里 body 数据的具体范围,供客户端确认。例如 “Content-Range: bytes 0-99/2000”,表示此次获取的是总计 2000 个字节的前 100 个字节。

3xx

3xx 类状态码表示客户端请求的资源发生了变动,客户端必须用新的 URI 重新发送请求获取资源。

  1. "301 Moved Permanently" 俗称“永久重定向”,含义是此次请求的资源已经不存在了,需要改用新的 URI 再次访问。

  2. "302 Found" 俗称“临时重定向”,意思是请求的资源还在,但暂时需要另一个 URI 来访问。

    两者的根本区别在于语义,一个是“永久”,一个是“临时”。

    比如,网站升级到了 HTTPS,原来的 HTTP 不用了,这就是“永久”的。

    ? 晚上网站后台要系统维护,服务暂时不可用,这就属于“临时”的,可以配置成 302 跳转,把流量临时切换到静态通知页面,浏览器看到这个 302 就知道是暂时的情况,不会做缓存优化。

  3. "304 Not Modified" 用于 If-Modified-Since 等条件请求,表示资源未修改,用于缓存控制。

4xx

4xx 类状态码表示客户端发送的请求报文有误,服务器无法处理。

  1. "400 Bad Request" 是一个通用的错误码,表示请求报文有误。
  2. "403 Forbidden" 表示服务器禁止访问资源。
  3. "404 Not Found" 表示资源未找到

5xx

5xx 类状态码表示客户端请求报文正确,但服务器在处理时内部发生了错误,无法返回应有的响应数据。

  1. "500 Internal Server Error" 通用错误码,表示服务器发生错误。

HTTP 常用状态码

上一篇:phpcms 9.6.1任意文件下载漏洞分析


下一篇:如何修改webbrowser里的JS函数