URL パラメータ解析ツール

対応している入力形式
  • URL: 完全なURL (例: https://example.com?id=123)
  • Query String: クエリ文字列 (例: id=123&name=test)

よくある質問

Basics

URLクエリ文字列とは?

URLクエリ文字列は、URLの疑問符(?)以降の部分です。アンパサンド(&)で区切られたキーと値のペアを含み、Webサーバーにデータを渡すために使用されます。例えば、'https://example.com/search?q=hello&lang=ja'では、クエリ文字列は'q=hello&lang=ja'です。

URLの構成要素は?

URLは複数の部分で構成されています:プロトコル(https://)、ドメイン(example.com)、ポート(:8080)、パス(/page)、クエリ文字列(?key=value)、フラグメント(#section)。クエリ文字列はサーバーにパラメータを渡すために使用され、フラグメントはクライアント側のナビゲーションに使用されます。

GETとPOSTパラメータの違いは?

GETパラメータはURLクエリ文字列に表示され、ブックマーク可能で共有可能な非機密データリンクに適しています。POSTパラメータはリクエストボディで送信され、URLには表示されず、機密データや大きなペイロードに使用されます。GETにはURL長制限(約2048文字)がありますが、POSTには実質的な制限がありません。

Security

なぜURLパラメータをエンコードする必要があるのですか?

URLにはASCII文字のみ含めることができ、特定の文字(&、=、?、/など)は特別な意味を持つため、URLエンコードが必要です。スペース、日本語文字、特殊記号はパーセントエンコード(例:スペースは%20)してURLで安全に送信する必要があります。

URLパラメータのセキュリティ上の注意点は?

機密データ(パスワード、トークン)をURLパラメータに入れないでください。ブラウザ履歴、サーバーログ、Refererヘッダーに表示されるためです。インジェクション攻撃を防ぐため、サーバー側で常にパラメータを検証・サニタイズしてください。送信中にURL全体(パラメータを含む)を暗号化するためにHTTPSを使用してください。

Usage

JavaScriptでURLパラメータを解析する方法

JavaScriptでは、URLSearchParams APIを使用できます:

const url = new URL('https://example.com?name=John&age=30');
const params = url.searchParams;
console.log(params.get('name')); // 'John'
console.log(params.get('age'));  // '30'

// Or get all parameters
for (const [key, value] of params) {
  console.log(key, value);
}

同じパラメータの複数の値を処理する方法

URLは同じパラメータに複数の値を持つことができます(例:?color=red&color=blue)。URLSearchParams.getAll('color')を使用して、すべての値を配列として取得できます。一部のサーバーでは、配列パラメータに?color[]=red&color[]=blueのようなブラケット表記を使用します。

ハッシュフラグメントパラメータとは?

ハッシュフラグメント(#以降)は、通常、クライアント側のナビゲーションやシングルページアプリケーションに使用されます。一部のフレームワークはハッシュでパラメータを渡します(例:#/page?id=123)。クエリ文字列とは異なり、ハッシュフラグメントはサーバーに送信されず、ブラウザで完全に処理されます。