GET メソッドとクエリ文字列
HTML フォームの GET 提出におけるクエリ文字列の削除
HTML フォームのGETメソッドで送信された場合、アクション URLからクエリ文字列が削除されます。これは、GET メソッドの特性によるものです。
GET メソッドの特性
- ブラウザがクエリ文字列を自動的に削除
ブラウザがフォームの送信時に、クエリ文字列を URL から削除して、新しいページをリクエストします。 - URLにクエリ文字列を直接追加する
GET メソッドでは、フォームの入力データをクエリ文字列として URL に追加します。
例
<form action="https://example.com/search" method="GET">
<input type="text" name="query">
<button type="submit">検索</button>
</form>
ユーザーが「keyword」を入力して送信すると、ブラウザは以下のようなリクエストを送信します。
https://example.com/search?query=keyword
しかし、サーバーが応答を返した後、ブラウザは新しいページの URL を https://example.com/search
に更新します。これにより、クエリ文字列が削除されます。
重要なポイント
- ブラウザの動作
ブラウザはクエリ文字列を削除することで、ユーザーが同じフォームを再送信した場合に同じ結果が得られることを保証します。 - サーバーサイドでの処理
クエリ文字列はサーバー側で処理され、フォームの入力データを取得するために使用されます。
GET メソッドとクエリ文字列の例
HTML フォームの例
<form action="https://example.com/search" method="GET">
<input type="text" name="query">
<button type="submit">検索</button>
</form>
- メソッド
GET
- アクション URL
https://example.com/search
クエリ文字列の生成
https://example.com/search?query=keyword
- クエリ文字列
query=keyword
サーバーサイドでの処理 (PHPの例)
<?php
$query = $_GET['query'];
// クエリ文字列から取得した値を使って検索処理を行う
echo "検索結果: " . $query;
?>
- 検索処理
取得した値を使って検索処理を行います。 - クエリ文字列の取得
$_GET['query']
を使用してクエリ文字列からquery
パラメータの値を取得します。
ブラウザの動作
POST メソッドの使用
- セキュリティの向上
POST メソッドは、URL に機密情報を公開しないため、セキュリティの観点から優れています。 - クエリ文字列の非表示
POST メソッドでは、フォームの入力データを HTTP ヘッダーに含まれるリクエストボディに送信します。これにより、クエリ文字列が URL に表示されません。
<form action="https://example.com/search" method="POST">
<input type="text" name="query">
<button type="submit">検索</button>
</form>
JavaScriptによるクエリ文字列の追加
- 柔軟な制御
この方法により、クエリ文字列の生成や追加をより柔軟に制御できます。 - 動的なクエリ文字列生成
JavaScriptを使用して、フォームの送信前にクエリ文字列を動的に生成し、アクション URL に追加することができます。
<form action="https://example.com/search" method="GET">
<input type="text" name="query">
<button type="submit" onclick="addQueryString()">検索</button>
</form>
<script>
function addQueryString() {
var query = document.querySelector('input[name="query"]').value;
var url = 'https://example.com/search?query=' + encodeURIComponent(query);
document.forms[0].action = url;
}
</script>
サーバーサイドでのクエリ文字列の処理
- URLの書き換え
サーバーサイドで、リクエストの URL を書き換えることで、クエリ文字列を削除することができます。
注意
- サーバーサイドの処理
サーバーサイドでのクエリ文字列の処理は、サーバーの構成やプログラミング言語に依存します。 - JavaScriptの制限
JavaScriptによるクエリ文字列の追加は、ブラウザのサポートやユーザーのJavaScriptの有効化に依存します。 - セキュリティ
POST メソッドは一般的にセキュリティの観点から推奨されます。
html forms http-get