フォームエンコーディング
Coddyの「ターミナルで学ぶネットワーク」コースのレッスン 34/47。
-d を使用すると、curl は本文の形式を説明するヘッダーを追加します。
Content-Type: application/x-www-form-urlencodedこの長い名前は、HTML フォームが常に使用してきた形式です。key=value のペアを & でつなぎます。サーバーはそのヘッダーを読み取り、本文をそれらの文字で分割すべきだと判断します。
ここで当然の疑問が生じます。値に & や = が含まれている場合はどうなるのでしょうか?それはエスケープする必要があります。パーセント記号と 2 桁の 16 進数で記述します。スペースは %20 または + になり、アンパサンドは %26 になります。
--data-urlencode はそのエスケープを代わりに行ってくれるので、人間が入力したものにはこちらを使うべきです。生のユーザー入力を通常の -d で送信すると、フィールドが最初のアンパサンドで不可解に途切れる原因になります。
チャレンジ
難しいcurl が選択するヘッダーを確認します。
- ポート 9124 でキャプチャリスナーを起動します
-dを使ってa=1を POST しますreq.txtから Content-Type の行を出力します
期待される出力:
Content-Type: application/x-www-form-urlencoded大文字と小文字を区別せずに一致させ、行の先頭に固定します。
自分で試してみよう
ターミナル
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ターミナルで学ぶネットワークのすべてのレッスン
自分で練習してみよう: Terminalプレイグラウンド