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属性なしでフォームを送信する際にブラウザが使用するフォーマットです。

試してみる — Content-Type Header Builder

フルツールを開く