第 3 课
相对 URL 与规范化
解析相对路径、保留意图,并避免意外改变规范 URL。
你看到的 URL 不一定都是绝对 URL。HTML、路由器、重定向和配置文件中经常使用相对 URL。
/account/settings
../images/logo.png
?page=2
相对 URL 需要 base URL 才能解析。
Base 会改变结果
给定这个 base:
https://example.com/docs/guides/url/
../api/ 会解析为:
https://example.com/docs/guides/api/
如果 base 变成没有尾部斜杠的 /docs/guides/url,解析结果可能变化,因为最后一段可能被视为文件。
规范化
规范化会让看似等价的 URL 更一致。例如:
- 移除默认端口
- 解析
.与..路径段 - 将主机名转为小写
- 为规范形式排序查询参数
规范化很有用,但当字节级一致性很重要时也很危险。
保留意图
不要随意规范化签名 URL、缓存键、OAuth 重定向或第三方回调链接,除非你明确知道它们的规范化规则。看似无害的重写可能让签名失效,或改变请求落到的端点。
解析的价值在于:你可以在重建 URL 之前先看到会改变什么。