HTTP 的工作原理
打开 URL 时,客户端会解析域名、建立连接并发送 HTTP 请求。请求中会指定方法、目标和协议版本,之后可带有标头和正文。
GET /products HTTP/1.1
Host: example.com
Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 12
{"items":[]}
服务器会返回状态码、响应标头,通常还会返回正文。HTTP/1.1 和 HTTP/2 基于 TCP 运行。HTTP/3 使用基于 UDP 的 QUIC,但仍采用相同的请求—响应模型。
HTTP 消息的组成部分
- **方法:**表示要执行的操作,例如
GET、POST、PUT或DELETE。 - **目标:**标识资源,例如
/products或/api/orders/42。 - **标头:**携带
Content-Type、Authorization和User-Agent等元数据。参见 HTTP 标头。 - **正文:**携带 HTML、JSON、表单数据或上传文件等内容。
HTTP 是无状态协议,每个请求都可以单独处理。网站需要跨请求识别客户端时,会使用 Cookie、授权令牌和服务器端会话。
HTTP 与 HTTPS 的区别
HTTPS 使用与 HTTP 相同的方法、标头和状态码,但通过 SSL/TLS 保护连接。
| 特性 | HTTP | HTTPS |
|---|---|---|
| URL 方案 | http:// |
https:// |
| 保护方式 | 不加密 | TLS 加密和认证 |
| 默认端口 | 80 | 443 |
明文 HTTP 流量途经的系统可能看到请求路径、标头和正文。HTTPS 则会保护这些内容在客户端与 TLS 端点之间的传输。
通过代理使用 HTTP
HTTP 代理接收客户端请求,并将其转发到目标服务器。对于明文 HTTP,代理可以读取请求和响应。对于 HTTPS,客户端通常会发送 CONNECT example.com:443,随后通过建立的隧道交换加密的 TLS 流量。
前向代理会改变目标服务器看到的源 IP,但不会自动纠正请求标头、Cookie 或请求行为。如果代理要求提供认证信息,却没有收到有效凭据,可能会在联系网站之前返回 407 Proxy Authentication Required(需要代理认证)。
常见问题
HTTP 有什么用途?
HTTP 用于传输网页、图片、下载文件、视频片段和 API 请求。浏览器、移动应用和自动化工具都用它与 Web 服务器通信。
HTTP 安全吗?
不安全。明文 HTTP 不会加密连接,也不会对连接进行认证,因此不应通过它发送敏感数据。HTTPS 则使用 TLS 提供保护。
HTTP 代理能处理 HTTPS 流量吗?
通常可以。代理可通过 CONNECT 方法建立隧道,让客户端和目标服务器通过隧道建立加密的 TLS 连接。