URL 规范化会修改传入 URL 中的分隔符、编码元素和字面量字节,使其符合一致的格式标准。
例如,假设有一个 WAF 自定义规则阻止 URL 匹配 www.example.com/hello 的请求。该规则不会阻止包含编码元素的请求,即 www.example.com/%68ello。在 Cloudflare 全球网络上规范化传入 URL 有助于简化包含 URL 的规则表达式。
两种可用的 URL 规范化类型是:
发生 URL 规范化的位置取决于配置的设置。
有关不同设置及其对请求 URL 的影响的示例,请参阅 URL 规范化示例。
根据 RFC 3986 ↗ 执行的 URL 规范化如下:
- 以下未保留字符被百分号解码 ↗(从其
%XX编码形式转换回原始字符):- 字母字符:
a-z、A-Z(从%41-%5A和%61-%7A解码) - 数字字符:
0-9(从%30-%39解码) - 连字符
-(%2D)、句点.(%2E)、下划线_(%5F) 和波浪号~(%7E)
- 字母字符:
- 这些保留字符不会被编码或解码:
: / ? # [ ] @ ! $ & ' ( ) * + , ; = - 其他字符(例如字面量字节值)被百分号编码。
- 百分号编码表示转换为大写。
- URL 路径根据删除点段 (Remove Dot Segments) ↗协议进行规范化。
使用 Cloudflare URL 规范化时,将按以下顺序对传入请求的 URL 应用一些额外的规范化技术:
- 将反斜杠 (
\) 规范化为正斜杠 (/)。 - 合并连续的正斜杠(例如,
//将被规范化为/)。 - 对生成的 URL 执行 RFC 3986 规范化。