Expand description
规范化引擎
本模块提供 HTTP 请求/响应的单次规范化处理, 确保所有协议(HTTP/1.1、HTTP/2、HTTP/3)生成一致的 CanonicalRequest。
§库内定位(全链路声明)
本模块是公共规范化参考实现:
normalize_path/percent_decode*(含_into零拷贝变体)/is_valid_header_name是全 workspace 唯一实现,被 zenith-web(三协议 normalize)、zenith-cache(键构造)、 zenith-waf(WAF 解码)、zenith-ebpf 等生产路径真实复用;normalize_request/normalize_request_with_config/normalize_headers/normalize_authority/normalize_query是面向外部集成方的一级规范化 API, 语义基线由tests/cross_protocol_consistency.rs(跨协议一致性全套集成测试) 锁定;zenith-web 生产路径使用性能特化的normalize_http1/2/3_request(同一规范化语义,零堆分配热路径),两条路径的语义一致性由该测试套件保证。
§规范化规则
§路径规范化
- 点段折叠(. / .. 处理)
- 多余斜杠处理
- 大小写标准化(保留原始大小写)
- URL 解码(安全字符)
§Header 规范化
- 字段名小写
- 多值合并(同名 Header 合并为逗号分隔)
- 空白字符标准化
- 非法字符过滤
§Authority 规范化
- Host 与端口标准化
- 默认端口省略
- 大小写统一
Structs§
- Normalize
Config - 规范化配置
- Normalize
Error - 规范化错误
Enums§
- Invalid
Sequence Policy - 非法百分号序列处理策略
Functions§
- is_
valid_ header_ name - 检查 Header 名是否合法(RFC 7230 token 定义)
- normalize_
authority - 规范化 Authority(host:port)
- normalize_
headers - 规范化 Headers
- normalize_
host_ key - 规范化 Host 用于缓存键等值折叠(scheme 无关策略)。
- normalize_
path - 规范化路径
- normalize_
query - 规范化查询字符串
- normalize_
request - 规范化 HTTP 请求
- normalize_
request_ with_ config - 使用自定义配置规范化 HTTP 请求
- percent_
decode - 百分号解码(fail-closed)
- percent_
decode_ bytes - 字节级百分号解码(Preserve 策略,分配
Vec) - percent_
decode_ bytes_ into - 字节级百分号解码,结果写入调用方缓冲区(Preserve 策略,零堆分配)
- percent_
decode_ with_ policy - 带非法序列策略的百分号解码(字符串级统一入口)
- split_
host_ port - 拆分
host[:port],处理 IPv6 方括号字面量([addr]/[addr]:port)。 - unbracket_
ipv6 - 剥离 IPv6 字面量外层的方括号(authority → SNI 形对齐)