URL パーサー
URL(Uniform Resource Locator)はWeb上のリソースを識別します。このツールはURLをスキーム、ホスト、ポート、パス、クエリパラメータ、フラグメントに分解します。パーセントエンコードされた値を自動デコードし、Punycode変換による国際化ドメイン名(IDN)を処理し、パラメータ内のBase64やJSONなどの埋め込みデータを検出できます。
仕様
よくあるユースケース
- OAuth 2.0リダイレクトURLとコールバックパラメータのデバッグ
- Webhook URLとそのクエリパラメータの検査
- トラッキングパラメータの分析(UTM、リファラーデータ)
- モバイルディープリンクのデコード(app://、カスタムスキーム)
- URLルーティング問題のトラブルシューティング
- 国際化ドメイン名をUnicodeとPunycode間で変換
機能
- すべてのURLコンポーネントを解析(スキーム、ホスト、ポート、パス、クエリ、フラグメント)
- パーセントエンコード(URLエンコード)された値を自動デコード
- クエリストリングをキーと値のペアに解析
- 国際化ドメイン名(IDN)をUnicodeとPunycode間で変換
- パラメータ値内のBase64またはJSONを検出してデコード
- 個別のコンポーネントをクリップボードにコピー
例
ヒント
- パーセントエンコーディングは安全でない文字を%XXに置き換えます。XXは16進数値です。
- フラグメント(#)はサーバーに送信されません。クライアント側専用です。
- クエリパラメータは同じキーで複数回出現できます。
- ユーザー情報の@や:などの一部の文字はエンコードが必要です。
- パラメータ値にはencodeURIComponent()を、完全なURLにはencodeURI()を使用してください。
解説 URL パーサー
URL(Uniform Resource Locator)はWebのアドレッシングシステムであり、RFC 3986でURI(Uniform Resource Identifier)の特定タイプとして定義されています。URLは複数のコンポーネントで構成されます:スキーム(httpsなどのプロトコル)、オーソリティ(ホスト、オプションのポート、オプションのユーザー情報)、パス、オプションのキーと値のパラメータからなるクエリストリング、オプションのフラグメント識別子。
パーセントエンコーディング(URLエンコーディング)は、URL内の特殊文字を表現するメカニズムです。非予約文字セット(A-Z、a-z、0-9、-、_、.、~)以外の文字は%XXとしてエンコードする必要があります。XXはバイトの16進数値です。スペースは%20になります(クエリストリングでは+)。非ASCII文字はまずUTF-8バイトとしてエンコードされ、各バイトがパーセントエンコードされます。
クエリストリングは&文字で区切られたkey=valueペアとしてパラメータを運びます。Webアプリケーションはこれを検索語、ページネーション、フィルタリング、ソート、トラッキング(UTMパラメータ)に使用します。OAuth 2.0リダイレクトURLはクエリパラメータに認証コードとステートトークンを含みます。複雑な値自体がURLエンコードされている場合があり、慎重なデコードが必要なエンコーディングの層を作り出します。
国際化ドメイン名(IDN)はPunycodeエンコーディング(RFC 3492)を使用してドメイン名内の非ASCII文字を表現します。xn--プレフィックスはPunycodeエンコードされたラベルを示します。例えば、muenchen.deはxn--mnchen-3ya.deになります。このエンコーディングはASCII専用のDNSシステムとの互換性を確保しながら、あらゆる文字体系でのドメイン名をサポートします。
JavaScriptは異なる目的を持つ2つのURLエンコーディング関数を提供しています。encodeURIは完全なURIをエンコードし、URL内で構造的意味を持つ文字(: / ? # @ や = など)を保持します。encodeURIComponentはクエリパラメータ値のような単一のURIコンポーネントをエンコードし、/ や & を含むすべての特殊文字をエンコードします。パラメータ値にはencodeURIComponentを使用し、encodeURIは完全なURLをエンコードする場合にのみ使用してください。フラグメント識別子(#以降のすべて)はRFC 3986でクライアント側専用と定義されています。ブラウザはこれをページ内ナビゲーションやシングルページアプリケーションのクライアントサイドルーティングに使用しますが、サーバーに送信されるHTTPリクエストには含まれません。
PunycodeはASCII専用のDNSシステム内で国際化ドメイン名を可能にするエンコーディングです。非ラテン文字を含むドメインはxn--プレフィックス付きのPunycodeでDNSに保存されるため、muenchen.deはxn--mnchen-3ya.deとして保存されます。ブラウザはユーザーにUnicode形式を表示し、裏ではDNS解決にPunycode形式を使用します。
クエリストリングは同じパラメータ名に対して複数の値を含むことができます(例:?color=red&color=blue)。異なるフレームワークはこれを異なる方法で処理します——最後の値を返すもの、最初の値を返すもの、すべての値の配列を返すものがあります。このツールはすべてのパラメータの出現を表示します。JavaScriptでは、URLSearchParams.getAll()は最初や最後だけでなく、繰り返されるキーのすべての値を取得します。