跳到主要内容

HTTP 与 HTTPS

这篇主要解决什么问题

  • 一个请求为什么能发出去
  • 为什么 HTTPS 比 HTTP 安全
  • HTTP/1.1、HTTP/2、HTTP/3 的差异对前端有什么影响

一个请求的主链路

  1. 浏览器解析 URL,判断协议、域名、端口、路径
  2. 先查缓存,再做 DNS 解析
  3. 建立连接:HTTP 走 TCP,HTTPS 走 TCP + TLS 握手
  4. 浏览器发送请求头、请求体
  5. 服务端返回状态码、响应头、响应体
  6. 浏览器根据 content-type、缓存头、资源优先级继续处理

HTTPS 比 HTTP 多了什么

  • TLS 握手:在真正传输业务数据前先协商加密方式
  • 证书校验:确认访问的服务端身份可信
  • 对称加密传输:后续数据传输效率更高

前端更需要关心的是结果:

  • 页面、接口、静态资源都应优先走 HTTPS
  • 混合内容会被现代浏览器拦截
  • 一些能力只在安全上下文里可用,比如 Service Worker、Clipboard API

HTTP 版本差异

HTTP/1.1

  • 支持长连接
  • 仍然容易受队头阻塞影响
  • 前端常见优化是减少请求数、合并资源、压缩静态资源

HTTP/2

  • 多路复用
  • Header 压缩
  • 在一个连接里并发多个请求
  • 对前端的影响是:资源拆分策略可以比 HTTP/1.1 更灵活

HTTP/3

  • 基于 QUIC(UDP)
  • 改善弱网环境下的连接恢复和队头阻塞问题
  • 对使用者来说通常是 CDN / 网关层收益更明显

前端高频关注点

  • 状态码:重点记住 200204301302304400401403404500
  • 内容类型:application/jsonmultipart/form-datatext/htmltext/cssapplication/javascript
  • 传输优化:gzip / br、keep-alive、CDN、资源缓存
  • 安全相关头:Strict-Transport-SecurityContent-Security-PolicySet-Cookie