Menu
Coddy logo textTech

フォームエンコーディング

Coddyの「ターミナルで学ぶネットワーク」コースのレッスン 34/47。

-d を使用すると、curl は本文の形式を説明するヘッダーを追加します。

Content-Type: application/x-www-form-urlencoded

この長い名前は、HTML フォームが常に使用してきた形式です。key=value のペアを & でつなぎます。サーバーはそのヘッダーを読み取り、本文をそれらの文字で分割すべきだと判断します。

ここで当然の疑問が生じます。値に &= が含まれている場合はどうなるのでしょうか?それはエスケープする必要があります。パーセント記号と 2 桁の 16 進数で記述します。スペースは %20 または + になり、アンパサンドは %26 になります。

--data-urlencode はそのエスケープを代わりに行ってくれるので、人間が入力したものにはこちらを使うべきです。生のユーザー入力を通常の -d で送信すると、フィールドが最初のアンパサンドで不可解に途切れる原因になります。

challenge icon

チャレンジ

難しい

curl が選択するヘッダーを確認します。

  1. ポート 9124 でキャプチャリスナーを起動します
  2. -d を使って a=1 を POST します
  3. req.txt から Content-Type の行を出力します

期待される出力:

Content-Type: application/x-www-form-urlencoded

大文字と小文字を区別せずに一致させ、行の先頭に固定します。

自分で試してみよう

ターミナル
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ターミナルで学ぶネットワークのすべてのレッスン

自分で練習してみよう: Terminalプレイグラウンド