URL query / fragment / refresh state

query・fragment・reloadの境界を分ける

共有URLでserverへ届く値とbrowserに残る値を、固定例で確認します。実URLは受け取らず、navigation・fetch・保存・送信を行いません。

URL stateの5つの境界

queryはHTTP requestと一緒に送られ、fragmentは初回requestには含まれません。reloadと共有では、どの値が残るかを分けて記録します。

query → server-visible / fragment → browser-only
レビュー
queryrequestへ含まれる値と、serverで扱う責務を分ける。
fragment初回HTTP requestへ送られないbrowser側の状態。
encoded見た目の文字列と受け側の復号責務を混同しない。
reload/shareaddress barに残る値と、reload後の復元条件を確認する。
secret-likefragmentでも秘密値を共有URLへ置かず、危険側で止める。

安全な確認の順番

  1. 固定URL例でqueryとfragmentを別々に記録する。
  2. encoded valueは表示と復号責務を分けて確認する。
  3. reload・共有で残る状態を仕様として明示する。
  4. 秘密らしい値はURLへ置かず、ローカルレビュー票で保留する。

このページは合成caseだけを扱います。ユーザーURLの解析、外部送信、保存、URLの書き換えは行いません。

5つの固定case

case固定例判断
query-server-visible/search?q=alphaqueryはserver-visible
fragment-browser-only/app#tab=detailsfragmentはbrowser-only
encoded-query-boundary/search?q=a%2Bb%20cencoded valueの責務を確認
reload-share-boundary/app?tab=results#focus=pricequeryとfragmentを別にreload/share
fragment-secret-risk/app#token=<redacted>秘密らしい値は共有せず保留