HTTP协议 IV 识别,连接,认证与安全
声明的,无状态的
HTTP 本身是一种声明式的,不负责状态存储的协议。
其构造本身只提供了简单的控制/访问流程 (方法,路径,协议号,以及首部的控制字段 → 状态码,响应首部,以及可能存在的响应内容)。 这个过程中的所有内容都是描述性的,需要外部的介质(一般是一些中间设备如客户端代理,网关,防火墙,服务端等)根据其描述来完成保活,存储,状态保存等一系列扩展功能。
状态存储
在面向应用的协议中,状态存储是一个很重要的属性。通过对状态的存储,可以为用户和服务端提供许多有用的扩展,如用户的个性化定制,会话的管理等。
HTTP首部
From 一般会用来承载一个邮箱地址
User-Agent 告知用户浏览器的相关信息
IP 地址
Authenticate 传输认证相关信息
Cookie
cookie是服务器端在客户端安置的小型存储
cookie描述了一些键值信息,可以供服务器进行访问查询确认用户的信息
1 |
|
认证
Web应用程序收到一条HTTP请求报文时,服务器没有按照请求执行动作,而是以一个“认证质询”进行响应,要求用户提供一些保密信息来说明他是谁,从而对其进行质询。
用户再次发起请求时,要附上保密证书(用户名和密码)。如果证书不匹配,服务器可以再次质询客户端,或产生一条错误信息。如果证书匹配,就可以正常完成请求了。
基本认证
- 客户端发送访问请求
- 服务端返回未授权,说明客户需求提供对应的用户名和密码
- 客户端重新发送带有认证信息的请求
- 服务端验证后正确则回复认证成功的响应
Base-64
将 8位数据转换为6位编码,用64个字符重新表示
基本认证存在很多缺陷,明文传输,以及在过于复杂的网络环境中有被监听和篡改报文的风险
摘要认证
客户端发送请求信息
1 |
|
服务器响应请求,请求进行授权认证
1 |
|
客户端对收到的随机数 和本地密码进行MD5计算,响应
1 |
|
字段与功能点
字段名 | 所在报文 | 典型组合 | 对应功能 |
---|---|---|---|
Connection +Upgrade |
请求 & 响应 | Connection: Upgrade ,Upgrade: websocket |
协议升级机制(如 HTTP → WebSocket) |
Host |
请求头 | - | 虚拟主机路由(同 IP 多域名支持) |
Content-Type +Content-Length |
请求/响应 | Content-Type: application/json |
请求体格式标识与数据边界控制 |
Transfer-Encoding |
响应头 | Transfer-Encoding: chunked |
分块传输机制(适合大文件/流式内容) |
Cookie +Set-Cookie |
请求 + 响应 | Set-Cookie: sessionId=abc123 |
客户端会话状态管理 |
Authorization +WWW-Authenticate |
请求 + 响应 | Authorization: Bearer <token> |
身份验证机制(如 OAuth、Basic) |
ETag +If-None-Match |
响应 + 请求 | ETag: "123abc" |
协商缓存:基于内容校验 |
Last-Modified +If-Modified-Since |
响应 + 请求 | Last-Modified: Tue, 12 May 2025 10:00:00 GMT |
协商缓存:基于时间戳 |
Cache-Control |
请求/响应 | Cache-Control: no-cache |
缓存行为控制(是否缓存、最大时长) |
Accept +Content-Type |
请求 + 响应 | Accept: application/json |
内容协商机制 |
Accept-Encoding +Content-Encoding |
请求 + 响应 | Content-Encoding: gzip |
压缩格式协商 |
Accept-Language |
请求头 | - | 响应语言偏好协商 |
Origin +Access-Control-* |
请求 + 响应 | Access-Control-Allow-Origin: * |
CORS 跨域访问控制 |
Referer |
请求头 | - | 来源追踪、防盗链、分析跳转 |
Location +3xx 状态码 |
响应头 | Location: <https://new.url > |
重定向机制 |
X-Forwarded-For |
请求头 | - | 获取客户端真实 IP(经代理) |
X-Requested-With |
请求头 | X-Requested-With: XMLHttpRequest |
AJAX 请求标识 |
长连接
将HTTP 会话变为维持TCP连接,从请求-响应-关闭 变为 请求-响应-等待超时-关闭
HTTPS
重定向与负载均衡
HTTP重定向
1 |
|
客户端 发送请求报文 :
1 |
|
服务端响应一个重定向报文
1 |
|
客户端向服务端提供的重定向地址重新发送请求
1 |
|
DNS重定向
1 |
|
IP MAC转发
1 |
|
IP 地址转发
1 |
|
HTTP协议 IV 识别,连接,认证与安全
http://gadoid.io/2025/05/13/HTTP协议-IV-识别,连接,认证与安全/