Skip to main content

Module normalize

Module normalize 

Source
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§

NormalizeConfig
规范化配置
NormalizeError
规范化错误

Enums§

InvalidSequencePolicy
非法百分号序列处理策略

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 形对齐)