レッスン 3
相対 URL と正規化
相対パスを解決し、意図を保持し、意図しない正規化変更を避けます。
見る URL がすべて絶対 URL というわけではありません。HTML、ルーター、リダイレクト、設定ファイルでは相対 URL がよく使われます。
/account/settings
../images/logo.png
?page=2
相対 URL は解決する前にベース URL が必要です。
ベースが重要
次のベースがあるとします。
https://example.com/docs/guides/url/
../api/ は次に解決されます。
https://example.com/docs/guides/api/
ベースが末尾スラッシュなしの /docs/guides/url に変わると、最後のセグメントがファイルとして扱われるため、解決結果が変わることがあります。
正規化
正規化は、同等に見える URL を一貫させます。例には次があります。
- デフォルトポートの削除
.と..パスセグメントの解決- ホスト名の小文字化
- 正規形のためのクエリパラメータのソート
正規化は有用ですが、バイト単位の同一性が重要な場合は危険になり得ます。
意図を保持する
正確な正規化規則を知らない限り、署名付き URL、キャッシュキー、OAuth リダイレクト、サードパーティコールバックリンクを正規化しないでください。無害に見える書き換えが署名を無効化したり、どのエンドポイントがリクエストを受け取るかを変えたりできます。
解析は、URL を再構築する前に何が変わるかを見ることができるため役立ちます。