HTTP 与 HTTPS
这篇主要解决什么问题
- 一个请求为什么能发出去
- 为什么 HTTPS 比 HTTP 安全
- HTTP/1.1、HTTP/2、HTTP/3 的差异对前端有什么影响
一个请求的主链路
- 浏览器解析 URL,判断协议、域名、端口、路径
- 先查缓存,再做 DNS 解析
- 建立连接:HTTP 走 TCP,HTTPS 走 TCP + TLS 握手
- 浏览器发送请求头、请求体
- 服务端返回状态码、响应头、响应体
- 浏览器根据
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 / 网关层收益更明显
前端高频关注点
- 状态码:重点记住
200、204、301、302、304、400、401、403、404、500 - 内容类型:
application/json、multipart/form-data、text/html、text/css、application/javascript - 传输优化:
gzip/br、keep-alive、CDN、资源缓存 - 安全相关头:
Strict-Transport-Security、Content-Security-Policy、Set-Cookie