HTTP 与 HTTPS
HTTP 和 HTTPS 是建站时最容易被“背概念”却最应该放进真实链路里理解的两个主题。
你不用把 TLS 细节全背下来,但至少要明确这几个问题:
- 浏览器为什么默认更信任
https://站点 - 证书到底在验证什么
- 为什么 Cloudflare、Nginx、对象存储、托管平台都会反复提到 HTTPS
- 为什么“页面能打开”和“链路足够安全”不是一回事
这篇要解决什么
一句话版本:
- HTTP 负责定义“浏览器和服务器怎么交换请求与响应”
- HTTPS 则是在 HTTP 之下加一层 TLS,把这条链路变成“可验证身份、可加密传输、可防篡改”的连接
HTTP 到底管什么
HTTP 本身主要定义这些内容:
- 请求方法,例如
GET、POST、PUT、DELETE - 状态码,例如
200、301、404、500 - 头部和正文怎么组织
- 客户端和服务器如何协商缓存、压缩、内容类型、鉴权等行为
这意味着:
- 你访问一张图片、一个 HTML 页面、一个 JSON API,本质上都可以走 HTTP
- 站点缓存、CDN 回源、浏览器开发者工具里看到的大部分字段,也都还是 HTTP 语义
HTTPS 多加了什么
HTTPS 可以理解成“HTTP over TLS”。
TLS 额外提供三件事:
- 机密性:别人截到流量,也不该直接看到内容
- 完整性:中途有人改包,通信双方应能发现
- 身份验证:浏览器需要确认自己连到的确实是你声明的域名,而不是一个伪造站点
HTTP 和 HTTPS 的核心区别
| 维度 | HTTP | HTTPS |
|---|---|---|
| 默认端口 | 80 | 443 |
| 传输内容 | 明文 | TLS 加密后传输 |
| 身份验证 | 没有 | 通过证书验证域名身份 |
| 防篡改 | 弱 | 有完整性保护 |
| 浏览器信任 | 容易被标记为不安全 | 现代网站默认要求 |
| SEO 与分享 | 通常不占优 | 更符合现代搜索和浏览器要求 |
证书到底是什么
可以把证书理解成“某个受信任机构签发的身份证明”,它至少说明:
- 哪个域名可以使用这张证书
- 这张证书由谁签发
- 有效期到什么时候
- 浏览器该如何验证这张证书链
建站时你最常见到的几类证书场景是:
- 托管平台自动证书:静态托管平台自动签发
- Let's Encrypt 证书:源站常见的免费方案
- Cloudflare 源站证书:只用于 Cloudflare 和源站之间
- 商业证书:少数企业场景仍会用到
一次 HTTPS 访问 大概发生了什么
最小理解版流程如下:
- 浏览器访问
https://example.com - 服务器返回证书
- 浏览器验证证书是否可信、域名是否匹配、是否过期
- 双方完成 TLS 握手,协商加密参数
- 之后才开始交换真正的 HTTP 请求和响应
建站里最常见的 4 个误区
1. “我只是个人站,不需要 HTTPS”
不对。现代浏览器、搜索引擎、第三方登录、表单提交、Service Worker 等能力几乎都默认把 HTTPS 当作前提。
2. “用了 Cloudflare,就不用配源站证书”
不一定。如果你的站点前面有 Cloudflare,Cloudflare 到源站这段链路也应该尽量加密。