跳转到正文

HTTP 协议 ​

BeginnerWeb Fundamentals

HTTP(HyperText Transfer Protocol)是浏览器与服务器之间通信的 应用层协议,是 Web 运作的基石。


一、📡 请求/响应模型 ​

HTTP 采用 请求-响应(Request-Response) 模式:客户端发送请求,服务器返回响应。

客户端(浏览器)                         服务器
     │                                    │
     │──── HTTP Request ────────────────►│
     │     (GET /index.html)              │
     │                                    │
     │◄──── HTTP Response ──────────────│
     │      (200 OK + HTML 文件)          │
     │                                    │

1.1 HTTP 请求结构 ​

一个 HTTP 请求由三部分组成:

http
GET /api/users HTTP/1.1          ← 请求行(方法 + 路径 + 协议版本)
Host: example.com                ← 请求头(Headers)
Accept: text/html
User-Agent: Chrome/120

                                 ← 请求体(Body,仅 POST/PUT 等有)
部分说明
请求行方法(GET)、资源路径(/api/users)、HTTP 版本
请求头附加信息(主机名、接受的内容类型、浏览器标识等)
请求体发送给服务器的数据(如表单内容、JSON),GET 请求通常没有

1.2 HTTP 响应结构 ​

http
HTTP/1.1 200 OK                  ← 状态行(协议版本 + 状态码 + 描述)
Content-Type: text/html          ← 响应头(Headers)
Content-Length: 3456

<!DOCTYPE html>                  ← 响应体(Body,即返回的内容)
<html>...</html>

二、📮 HTTP 方法(Methods) ​

HTTP 方法定义了对资源的 操作类型:

方法语义幂等性典型用途
GET获取资源✅ 是加载网页、获取数据
POST创建资源❌ 否提交表单、创建新记录
PUT替换资源✅ 是更新完整资源
PATCH部分更新❌ 否修改资源的部分字段
DELETE删除资源✅ 是删除指定资源

幂等性(Idempotent)

幂等操作意味着 执行一次和执行多次的效果相同。GET 请求不管发送多少次,服务器上的数据不会改变;而 POST 每次可能创建一条新记录。

CRUD 映射 ​

Web 开发中,HTTP 方法与数据操作(CRUD)直接对应:

CRUDHTTP 方法示例
Create(创建)POSTPOST /api/users
Read(读取)GETGET /api/users/123
Update(更新)PUT / PATCHPUT /api/users/123
Delete(删除)DELETEDELETE /api/users/123

三、🔢 状态码(Status Codes) ​

服务器通过状态码告知客户端请求的处理结果,按首位数字分为五类:

3.1 分类总览 ​

范围类别含义
1xx信息性请求已接收,继续处理
2xx成功请求已成功处理
3xx重定向需要进一步操作才能完成
4xx客户端错误请求有误(客户端的问题)
5xx服务器错误服务器处理请求时出错

3.2 常用状态码 ​

状态码名称说明
200OK请求成功
201Created资源创建成功(常见于 POST 响应)
301Moved Permanently资源永久移动到新 URL
302Found资源临时重定向
304Not Modified资源未改变,使用缓存版本
400Bad Request请求语法错误,服务器无法理解
401Unauthorized未认证(需要登录)
403Forbidden已认证但无权限访问
404Not Found请求的资源不存在
500Internal Server Error服务器内部错误
502Bad Gateway网关/代理服务器收到无效响应
503Service Unavailable服务器暂时不可用(过载或维护)

记忆技巧

  • 2xx = 一切正常 ✅
  • 3xx = 去别的地方 ↗️
  • 4xx = 你搞错了 ❌(客户端问题)
  • 5xx = 我搞错了 💥(服务器问题)

四、📋 Headers(请求头 / 响应头) ​

Headers 是 HTTP 消息中的 键值对元数据,提供请求或响应的附加信息。

4.1 常见请求头 ​

Header作用示例值
Host目标服务器的域名www.example.com
User-Agent客户端标识(浏览器类型)Mozilla/5.0 Chrome/120
Accept客户端可接受的内容类型text/html, application/json
Content-Type请求体的数据格式application/json
Authorization认证凭据Bearer eyJhbGci...
Cookie发送存储的 Cookiesession_id=abc123

4.2 常见响应头 ​

Header作用示例值
Content-Type响应体的数据格式text/html; charset=UTF-8
Content-Length响应体大小(字节)3456
Set-Cookie设置 Cookiesession_id=abc123; HttpOnly
Cache-Control缓存策略max-age=3600
Location重定向目标 URLhttps://new-url.com

五、🔒 HTTPS ​

HTTPS = HTTP + TLS/SSL 加密,是 HTTP 的安全版本。

5.1 HTTP vs HTTPS ​

特性HTTPHTTPS
端口80443
加密❌ 明文传输✅ TLS 加密
证书不需要需要 SSL 证书
URL 前缀http://https://
浏览器标识⚠️ "不安全"🔒 锁形图标

5.2 HTTPS 工作原理(简化) ​

1. 客户端发起 HTTPS 请求
2. 服务器返回 SSL 证书(含公钥)
3. 客户端验证证书的合法性
4. 双方协商加密密钥(TLS 握手)
5. 后续通信使用对称加密传输数据

5.3 为什么必须使用 HTTPS ​

  • 数据安全:防止中间人窃听密码、信用卡等敏感信息
  • 数据完整:防止传输过程中的数据篡改
  • SEO 加分:Google 将 HTTPS 作为搜索排名因素
  • 现代 API:Geolocation、Service Worker 等仅在 HTTPS 下可用

六、📚 参考资源 ​


← 返回 Web 开发研究