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.