第 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 之前先看到会改变什么。

想动手练习时,可使用 DevCove 相关工具——可选,不属于本课正文。

打开相关工具

返回课程概览