Skip to content

HTTP 与 HTTPS

HTTP 是前后端都必考的模块。答题主线:HTTP 各版本的演进解决了什么问题 → HTTPS 怎么解决安全问题。

Q1: HTTP/1.0、1.1、2、3 的主要区别? 「🟡 中级」

考察点:协议演进的脉络,能否说清每代解决的问题。

参考答案

  • 1.0:每次请求都要新建连接。
  • 1.1:默认长连接(keep-alive)、管道化(有队头阻塞,实际很少用)、新增 Host 头支持虚拟主机、缓存机制增强。
  • 2:二进制分帧、多路复用(一个连接并行收发多个请求,解决应用层队头阻塞)、头部压缩(HPACK)、服务器推送。
  • 3:基于 QUIC(UDP),解决 TCP 层的队头阻塞;连接迁移(切网不断连);0-RTT 建连。

追问延伸

  • HTTP/2 为什么还会有队头阻塞?(TCP 层丢包会阻塞整个连接)
  • HPACK 是怎么做头部压缩的?

Q2: GET 和 POST 的区别? 「🟢 校招/初级」

考察点:基本功,但答得太浅会被追问到语义层面。

参考答案

  • 语义:GET 是获取资源(幂等、安全),POST 是提交资源(非幂等)。
  • 参数位置:GET 参数在 URL 查询串,POST 在请求体。
  • 缓存:GET 可被缓存和收藏,POST 默认不缓存。
  • 长度限制:HTTP 协议本身不限制,是浏览器/服务器实现的差异;幂等性导致 GET 失败可安全重试。
  • 进阶:RFC 层面二者都能带 body,区别主要是语义约定而非硬性限制。

追问延伸

  • PUT 和 PATCH 的区别?
  • 为什么浏览器刷新会重复提交 POST?怎么防?(PRG 模式)

Q3: 常见状态码及其含义? 「🟢 校招/初级」

考察点:分类记忆能力。

参考答案

  • 2xx:200 成功;201 已创建;204 无内容。
  • 3xx:301 永久重定向;302 临时重定向;304 协商缓存命中。
  • 4xx:400 参数错误;401 未认证;403 无权限;404 不存在;429 限流。
  • 5xx:500 服务器内部错误;502 网关收到上游无效响应;503 服务不可用;504 网关等上游超时。

追问延伸

  • 401 和 403 的区别?(没登录 vs 登录了但没权限)
  • 502 和 504 在排查时方向有什么不同?

Q4: 浏览器缓存:强缓存和协商缓存? 「🟡 中级」

考察点:性能优化基础,必考。

参考答案

  • 强缓存:不发请求。Cache-Control: max-age=N(优先级高)或 Expires(绝对时间,易受时钟影响)。
  • 协商缓存:发请求验证。ETag(内容指纹,优先级高)配 If-None-MatchLast-ModifiedIf-Modified-Since;未变化返回 304。
  • 典型策略:HTML 用协商缓存,静态资源用强缓存 + 文件名哈希。

追问延伸

  • ETag 在集群部署下要注意什么?(不同节点生成值不一致)
  • CDN 上的缓存策略怎么设计?

Q5: HTTPS 的加密过程? 「🟡 中级」

考察点:非对称加密、证书、会话密钥的完整链路。

参考答案

  • HTTPS = HTTP + TLS。TLS 握手(以 1.2 为例):
    1. Client Hello:发送支持的版本、加密套件、客户端随机数。
    2. Server Hello:选定套件、服务端随机数 + 数字证书(含公钥,由 CA 签发)。
    3. 客户端验证证书链(根证书内置在操作系统/浏览器),生成预主密钥并用服务端公钥加密发送(ECDHE 场景改为交换密钥参数)。
    4. 双方用三个随机数推导出会话密钥,后续通信用对称加密。
  • 核心思想:非对称加密交换密钥,对称加密传输数据(对称加密快,非对称加密解决密钥分发)。

追问延伸

  • 证书链是怎么验证的?中间人拿到证书能伪造吗?
  • 为什么 TLS 1.3 去掉了 RSA 密钥交换?(前向安全性)

Q6: Cookie、Session、Token(JWT)的区别? 「🟡 中级」

考察点:认证会话方案的选型。

参考答案

  • Cookie:浏览器端存储,随请求自动携带;可设 HttpOnly、Secure、SameSite。
  • Session:服务端存会话状态,客户端只存 sessionId(通常放 Cookie);分布式下需要会话共享(Redis)。
  • JWT:无状态令牌,包含 header.payload.signature,服务端验签即可,不依赖存储;缺点是无法主动失效(除非引入黑名单)。
  • 微服务/多端场景倾向 JWT + 短有效期 + refresh token;传统单体应用 Session 更简单。

追问延伸

  • JWT 被盗了怎么办?(短有效期、刷新机制、黑名单)
  • SameSite 属性防的是什么攻击?(CSRF)