HTTP vs HTTPS
HTTP 与 HTTPS 共享同一套 HTTP 语义;HTTPS 的关键差异是把 HTTP 通信置于 TLS 保护下,从而增加机密性、完整性和服务端身份认证。
#synthesis
#growing
#network
#http
#https
[!info] related notes
- 所属 MOC: http-and-frontend-networking-moc
- 相关概念:
- 易混淆概念:
- 相关资源:
HTTP vs HTTPS
范围
本文只回答一个关系问题:
HTTP 与 HTTPS 到底差在哪里?
HTTP 本身的资源、方法、状态码、头字段、缓存等语义见 HTTP;TLS、证书与握手细节见 HTTPS。
共同点
HTTPS 不是另一套应用语义。
无论是 HTTP 还是 HTTPS,应用层仍然围绕:
URI / Resource
→ Method
→ Headers
→ Content
→ Status Code
展开。
所以:
HTTPS = HTTP 语义 + TLS 保护的传输通道。
核心差异
HTTP
如果直接使用未受 TLS 保护的 HTTP 传输,链路上的中间参与者更容易观察或修改传输内容。
HTTPS
HTTPS 在 HTTP 通信外增加 TLS:
HTTP semantics
↓
TLS
↓
TCP / QUIC 等底层传输
由 TLS 提供三类核心安全能力:
- 机密性:第三方不能直接读取明文内容;
- 完整性:传输中的篡改可被检测;
- 身份认证:客户端通过证书等机制确认正在和目标服务端建立安全连接。
HTTPS 多出的关键过程
建立 HTTPS 连接时,需要先完成 TLS 握手所需的协商与身份验证,再建立受保护的数据通道。
具体握手机制应去 HTTPS / TLS 相关笔记理解,不在这里重复完整握手教程。
HTTPS 不等于“网站绝对安全”
HTTPS 解决的是传输通道安全,不是应用所有安全问题。
即使网站使用 HTTPS,仍然可能存在:
- XSS;
- CSRF;
- 越权;
- 弱密码;
- 服务端业务漏洞;
- 恶意页面本身。
因此:
HTTPS
≠
应用逻辑天然安全
一个最小场景
浏览器请求:
https://api.example.com/users/42
HTTP 层仍然表达“对哪个资源执行什么方法、携带什么头字段”;HTTPS 的额外职责是让这些 HTTP 数据在网络传输时经过 TLS 保护。
决策边界
现代公开 Web 服务通常应默认使用 HTTPS。
真正需要判断的不是:
HTTP 和 HTTPS 哪个“功能更多”?
而是:
当前 HTTP 语义是否通过受认证、加密且具完整性保护的通道传输?
学习检查
不看正文回答:
- HTTP 与 HTTPS 的应用层语义是否不同?
- TLS 给 HTTPS 增加了哪三类核心安全能力?
- 为什么 HTTPS 不能防止 XSS 或业务越权?
- HTTPS 建立连接时,相比普通 HTTP 多出的关键阶段是什么?
- 如果 API 使用 HTTPS,但服务端授权逻辑错误,HTTPS 能不能解决?为什么?