HTTP / HTTPS 篇
HTTP 是你每天用得最多的协议——只要打开网页、刷 App、看公众号,背后都是 HTTP 在跑。它定义了"浏览器和服务器怎么对话":你问什么、它答什么、答错了怎么告诉你。
HTTP 就像你跟服务员的对话:
你说:"我要一份牛肉面,加香菜不加葱。"(请求)
服务员记下来,送到后厨。(处理)
后厨做好,服务员端给你:"您的牛肉面。"(响应)
如果没牛肉了,服务员说:"不好意思,卖完了。"(错误响应)
整个过程有固定格式——你不能上来就喊"面!",得说"我要一份……"——这就是 HTTP 的"协议格式"。
HTTP 请求长什么样
你在浏览器输 baidu.com,浏览器实际发了这么一段文字给服务器:
GET / HTTP/1.1
Host: baidu.com
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 17_0)
Cookie: BAIDUID=1234567890ABCDEF
Accept: text/html,application/xhtml+xml
- GET方法——我要"获取"东西(还有 POST 提交、PUT 更新、DELETE 删除)
- Host我要访问哪个网站
- User-Agent我是谁——浏览器型号、操作系统
- Cookie我上次来过的"凭证"——这是重点,后面详讲
- Accept我能接受什么格式的内容
HTTP 响应长什么样
服务器收到后,回一段文字 + 网页内容:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Set-Cookie: BAIDUID=1234567890ABCDEF; Path=/; Max-Age=31536000
<!DOCTYPE html><html>...网页内容...</html>
- 200 OK状态码——成功(404 没找到、500 服务器挂了、302 跳转)
- Content-Type我给你的是什么格式——HTML、JSON、图片、视频
- Set-Cookie我给你发个"凭证",下次来带着
常见状态码速查
| 状态码 | 含义 | 你什么时候见到 |
|---|---|---|
| 200 | 成功 | 正常打开网页 |
| 301 / 302 | 永久/临时跳转 | 旧网址换新网址 |
| 304 | 没变化,用缓存 | 刷新网页,内容没变 |
| 400 | 请求格式错了 | 网址输错参数 |
| 401 | 没登录,没权限 | 访问需要登录的页面 |
| 403 | 禁止访问 | IP 被封、地区限制 |
| 404 | 没找到 | 网址不存在、页面被删 |
| 500 | 服务器内部错误 | 网站崩了 |
| 502 / 503 | 网关错误/服务不可用 | 服务器过载、维护中 |
Cookie · HTTP 的"记忆机制"
HTTP 协议本身是无状态的——服务器不记得你上次来过。每次请求都是"陌生人"。但网站需要"记住"你——登录状态、购物车、浏览记录。Cookie 就是干这个的。
你去迪士尼,第一次入园时给你一张"快速通行证"(Cookie)。
之后每次玩项目,你出示这张证——工作人员一看就知道"你是 VIP,不用排队"。
没有这张证,你每次都要重新排队、重新验证身份。
Cookie 就是浏览器里的"快速通行证"——网站给你发一张,你每次访问都带着,网站就知道"你是张三,已登录"。
Cookie 的工作流程
1. 你第一次访问网站
服务器响应里带 Set-Cookie: sessionid=abc123——浏览器自动存下来。
2. 你之后每次访问
浏览器自动在请求头里加 Cookie: sessionid=abc123——服务器一看就知道"你是刚才那个人"。
3. 你登录
服务器验证账号密码后,发一个"登录态" Cookie(比如 token=xyz789)——之后你访问任何页面都带着它,不用反复登录。
4. Cookie 过期
服务器可以设 Max-Age(有效期)——过期后浏览器自动删除,你得重新登录。
Cookie 能看到什么
| Cookie 里存什么 | 例子 |
|---|---|
| 会话 ID | sessionid=abc123——标识"这次访问" |
| 登录态 | token=xyz789——标识"你已登录" |
| 用户偏好 | theme=dark——记住你喜欢深色模式 |
| 购物车 | cart=item1,item2——记住你加了什么 |
| 追踪 ID | uid=456——广告商用来追踪你看了什么 |
Cookie 的安全问题
- XSS 偷 Cookie黑客在网页里插一段恶意 JS,读取你的 Cookie 发给黑客服务器——你的登录态就被盗了。防御:HttpOnly 标记(JS 读不到)。
- CSRF 伪造请求你登录了银行网站,黑客给你发个链接,你一点——浏览器自动带着银行 Cookie 去转账。防御:SameSite 标记(只允许同站请求带 Cookie)。
- 明文泄露HTTP 是明文传输,Cookie 能被中间人截获。防御:HTTPS 加密。
HTTPS · HTTP 的加密版
HTTPS = HTTP + TLS(传输层加密)。它在 HTTP 外面包了一层"加密隧道"——即使数据被截获,黑客也看不懂。
| HTTP | HTTPS | |
|---|---|---|
| 传输内容 | 明文——谁都能看 | 加密——只有双方能解密 |
| 默认端口 | 80 | 443 |
| 证书 | 不需要 | 需要 CA 颁发的证书 |
| 速度 | 快一点 | 慢一点(加密解密要算力) |
| 安全性 | 低——能被监听、篡改 | 高——防监听、防篡改、防冒充 |
HTTP 像明信片——邮递员、分拣员、任何人都能看你写了什么。
HTTPS 像密封信——信封上只有地址,内容只有收信人能拆。
2020 年后,所有正规网站都用 HTTPS——浏览器地址栏有个小锁🔒,就是 HTTPS 的标志。
HTTP/2 和 HTTP/3 · 更快的新一代
- HTTP/2(2015)一个连接同时传多个文件(以前要排队)、头部压缩、服务器主动推送——网页加载快 30%。
- HTTP/3(2022)基于 UDP 的 QUIC 协议——更快、更稳,尤其在弱网(地铁、电梯)下。Google、Cloudflare 已全面支持。
你每天都在用的 HTTP 方法
| 方法 | 干什么 | 你什么时候触发 |
|---|---|---|
| GET | 获取资源 | 打开网页、刷抖音、看图片 |
| POST | 提交数据 | 登录、发朋友圈、填表单 |
| PUT | 更新资源 | 改头像、编辑资料 |
| DELETE | 删除资源 | 删微博、清空购物车 |
| HEAD | 只获取头部 | 检查文件是否存在、大小 |
HTTP 是"浏览器和服务器对话的格式"——请求/响应、状态码、Cookie、HTTPS 加密,四件事搞定。
Cookie 是 HTTP 的"记忆补丁",让无状态的协议能"记住"你。理解 Cookie,你就理解了"为什么登录一次,之后不用反复登"。