URLエンコードフォームデータのContent-Type
application/x-www-form-urlencodedフォーム送信用のContent-Typeヘッダーを設定します。エンコーディングルールとmultipartとの使い分けを解説します。
Form Submissions
詳細な説明
URLエンコードフォームデータ
application/x-www-form-urlencodedはHTMLフォーム送信のデフォルトContent-Typeです。データはキーバリューペアとして送信され、特殊文字はパーセントエンコードされます。
ヘッダー値
Content-Type: application/x-www-form-urlencoded; charset=utf-8
エンコーディングルール
ボディは&で結合されたkey=valueペアの単一文字列です:
username=john%40example.com&password=p%40ssw0rd&remember=true
特殊文字はパーセントエンコードされます:
- スペースは
+または%20になる @は%40になる&は%26になる=は%3Dになる
使用する場面
URLエンコードフォームデータを使用する場面:
- ファイルアップロードのないシンプルなHTMLフォームの送信
- OAuthトークンエンドポイントへのデータ送信(RFC 6749で必須)
- フォームデータを期待するレガシーAPIへのポスト
- ペイロードがテキストのキーバリューペアのみの場合
使用しない場面
multipart/form-dataに切り替える場面:
- フォームにファイルアップロード(
<input type="file">)が含まれる場合 - ペイロードにバイナリデータが含まれる場合
- 個々の値が非常に大きい場合(URLエンコーディングは非ASCII文字に対して約3倍のオーバーヘッドを追加)
curlの例
curl -X POST \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=authorization_code&code=abc123&redirect_uri=https%3A%2F%2Fexample.com%2Fcallback" \
https://auth.example.com/token
ユースケース
標準的なHTMLフォーム送信、OAuth 2.0トークンリクエスト、フォームエンコードデータを期待するAPIに使用します。enctype属性なしでフォームを送信する際にブラウザが使用するフォーマットです。