第 4 课
在日志与 API 中调试 URL
用拆解后的组成部分调试重定向、签名、缓存键和追踪链接。
生产环境出现 URL bug 时,完整字符串通常很吵。先解析,再逐个组成部分对比。
重定向问题
调试重定向时检查:
- 协议与主机
- 路径是否带尾部斜杠
- 查询值中是否包含编码后的 URL
- 片段值是否根本不会到达服务器
OAuth 重定向问题经常藏在嵌套 URL 中:
redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback%3Fnext%3D%252Fbilling
一层一层解码。一次性全部解码可能会掩盖哪个分隔符属于哪一层。
签名问题
调试签名 URL 时对比:
- 参数顺序
- 百分号编码
- 包含和排除的字段
- 时间戳与过期时间
- 主机与路径大小写规则
签名方和校验方必须使用同一套 URL 规范化规则。
缓存问题
缓存可能把这些 URL 视为不同:
?a=1&b=2
?b=2&a=1
也可能把它们规范化为同一个缓存键。你需要知道 CDN、代理或应用层采用哪种规则。
实用工作流
- 保存原始 URL,保持和观察到的一模一样。
- 拆分成组成部分。
- 只在当前检查的层级解码。
- 对比预期与实际组成部分。
- 使用明确规则重建 URL。
目标不是让 URL 变漂亮,而是保留接收系统期望的含义。