Skip to content

HTTP基础

HTTP:超文本传输协议(HyperText Transfer Protocol),属于应用层协议,最早用于传输HTML,后来可以传输各种资源。

请求-响应 模型

一般需要经历如下过程:

  1. 建立连接
  2. 发送请求
  3. 处理请求
  4. 发送响应
  5. 关闭连接

简单来说,就是客户端向服务器发送请求(request),服务端收到请求后返回对应资源。

报文结构

报文(Message),分为请求报文和响应报文。

请求报文结构:

  • 请求行:一般包含请求方法、请求目标、版本号
  • 请求头:使用Key:Value的结构,用于描述各种状态、信息
  • 空行:在最后一个请求头后,通知服务器以下不再有请求头
  • 消息体:可选,比如GET就不可能有;但是POST就有

其中常见的请求头

  • Host:指定目标主机和端口
  • User-Agent:客户端标识
  • Accept、Accept-Encoding:期望接收的数据类型和编码
  • Content-Type、Content-Length:请求体格式与长度
  • Authorization:携带认证凭证(如 Token、Basic Auth)

示例:

text
GET /api/users?page=2 HTTP/1.1
Host: example.com
Accept: application/json
User-Agent: Go-http-client/1.1

响应报文结构:

  • 状态行:包含协议版本、状态码等信息
  • 响应头:类似请求头,也是键值对,用于描述状态等
  • 空行:
  • 消息体:服务端返回给客户端的资源等

其中常见的响应头

  • Content-Type、Content-Length:响应体格式与长度
  • Cache-Control、Expires、ETag:缓存控制
  • Set-Cookie:服务器向客户端写入 Cookie
  • Connection:连接管理(keep-alive、close)

示例:

text
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 48

{"page":2,"users":[{"id":1,"name":"Alice"}]}

HTTP 方法

方法用途安全性幂等性请求体典型场景
GET读取资源安全幂等列表/详情查询
POST创建/提交不安全非幂等新建、表单提交
PUT完整更新不安全幂等整体替换资源
PATCH局部更新不安全可幂等修改部分字段
DELETE删除资源不安全幂等删除操作
HEAD读取头部安全幂等资源存在校验、缓存预检
OPTIONS查询支持选项安全幂等CORS 预检、API 探测
CONNECT建隧道(代理)不安全非幂等HTTPS 代理隧道
TRACE回显请求不安全幂等调试(通常禁用)

HTTP 状态码

收集常用

类别状态码含义
1xx100继续(继续发送)
101升级(切换协议)
2xx200请求成功
201已创建
204无内容
3xx301永久重定向
302临时重定向
304未修改(可用缓存)
4xx400错误请求
401未授权
403禁止访问
404未找到
5xx500服务器内部错误
502错误网关
503服务不可用

Released under the MIT License.