代码随想录 | 八股-HTTP请求2

HTTP中常见的状态码有哪些?

HTTP 状态码用于表明特定HTTP请求是否完成

1xx 信息响应(100–199)

✅“我听到了,继续吧”

表示请求已接收,继续处理

  • 100 Continue:初始部分已接收,客户端应继续发送。
  • 101 Switching Protocols:服务器:同意更改协议。
  • 102 Processing:服务器:已收到,正在处理。

2xx 成功响应(200–299)

表示请求已成功接收

🎉“你请求的事我办妥了”

  • 200 OK:请求成功。
  • 201 Created:请求成功并创建了新的资源(例如注册)
  • 202 Accepted:请求已接受,但未响应 -不会有一个异步的响应去表明当前请求的结果,预期另外的进程和服务去处理请求
  • 204 No Content:请求成功,但无返回内容。
  • 206 Partial Content:当从客户端发送Range范围标头以只请求资源的一部分时,使用此响应代码(例如断点续传)

3xx 重定向(300–399)

表示需要进一步操作以完成请求。

🔀“去别处找”

  • 301 Moved Permanently:请求的资源已永久移动到新位置。
  • 302 Found:请求的资源临时从不同的 URI 响应请求。
  • 303 See Other:请求应使用另一个 URI 获取资源。
  • 304 Not Modified:资源未修改,可使用缓存。
  • 307 Temporary Redirect:请求的资源临时从不同的 URI 响应请求,方法不变。
  • 308 Permanent Redirect:请求的资源已永久移动到新位置,方法不变。

4xx 客户端错误(400–499)

表示请求包含语法错误或无法完成

  • 400 Bad Request:请求无效,服务器无法理解。
  • 401 Unauthorized:请求要求客户端身份认证。
  • 403 Forbidden:服务器知道客户端身份,但客户端没有访问权限
  • 404 Not Found:请求的资源未找到。
  • 405 Method Not Allowed:请求方法被禁止。
  • 408 Request Timeout:请求超时。
  • 429 Too Many Requests:客户端发送的请求过多,已被限制。

5xx 服务器错误(500–599)

表示服务器未能完成合法的请求。

  • 500 Internal Server Error:服务器内部错误,无法完成请求。
  • 501 Not Implemented:服务器不支持请求的功能。
  • 502 Bad Gateway:服务器作为网关或代理,从上游服务器收到错误响应。
  • 503 Service Unavailable:服务器当前无法处理请求。
  • 504 Gateway Timeout:服务器作为网关或代理,未及时从上游服务器收到响应。

什么是强缓存和协商缓存

🌟一、强缓存(完全不发请求)

关键词:直接使用缓存,不访问服务器

✅ 特点:
  • 浏览器直接使用本地缓存资源
  • 不向服务器发请求。
  • 若命中强缓存,状态码为 200 (from memory cache)200 (from disk cache)
📌 实现方式:
字段 说明
Cache-Control: max-age=秒数 (相对时间,更准确)当前资源在 N 秒内有效✅推荐
Expires: GMT时间 (绝对时间,受本地时间影响)指定资源过期时间❌已过时
  1. 首次访问资源
    服务器返回资源时在响应头加上 Cache-Control: max-age=秒数,告知浏览器这个资源可以缓存多久。

  2. 再次访问时
    浏览器会用“当前时间 - 缓存时间”与 max-age 做比较:

    • 没过期 → 直接用缓存,不发请求
    • 过期 → 发起新请求,向服务器重新获取资源
  3. 服务器响应更新
    每次服务器响应时都会更新 Cache-Control,供下一轮缓存使用。

🔄二、协商缓存(发请求,服务器决定是否使用缓存)

关键词:发请求,比较“资源是否改过”

✅ 特点:
  • 请求时会向服务器询问资源是否有更新。
  • 如果没变,返回 304 Not Modified,继续用本地缓存。
  • 如果变了,返回 200 + 新资源
📌 两种主流方式:
方式 请求头字段 响应头字段 原理 优缺点简析
Last-Modified If-Modified-Since Last-Modified 比较“上次修改时间” ⛔秒级精度、不改内容也可能变时间
ETag If-None-Match ETag 比较“文件指纹/哈希” ✅更精准,内容变才更新

🔁三、常见误区与补充

  • 强缓存命中 → 不发请求
  • 强缓存失效 → 发请求,进入协商缓存阶段
  • 如果协商缓存也失效,才真正下载新资源。