コース目次 / 第1章
リクエストの解剖 — メソッド・パス・ヘッダ
curl -v で、リクエストが「メソッド + パス + ヘッダ + 空行 + ボディ」という平文の構造であることを、自分の目で確かめます。
HTTP リクエストは、特別な暗号ではありません。ただのテキストです。中身はこうなっています。
GET /hello?name=alice HTTP/1.1 ← リクエスト行(メソッド パス プロトコル)
Host: 127.0.0.1:4610 ← ヘッダ(何行でも)
User-Agent: curl/8.7.1
Accept: */*
← 空行(ここでヘッダの終わり)
(ボディ。GET では普通は空)
診断では、この一行ずつを自分で書き換えます。まずは目で見てみましょう。
生のリクエストを見る
curl -v(verbose)を付けると、curl が実際に送った行(>)と受け取った行(<)が見えます。
curl -s -v "http://127.0.0.1:4610/hello?name=alice"
> GET /hello?name=alice HTTP/1.1
> Host: 127.0.0.1:4610
> User-Agent: curl/8.7.1
> Accept: */*
>
< HTTP/1.1 200 OK
< content-type: application/json; charset=utf-8
> で始まる4行が、あなたが送ったリクエストです。1行目がリクエスト行、続く3行がヘッダ、そして空行。これがブラウザも裏で送っているものの正体です。
メソッドを変える
-X でメソッドを指定できます。同じパスに DELETE を送ってみます。
curl -s -X DELETE "http://127.0.0.1:4610/hello?name=alice"
返ってきた JSON の "method" が "DELETE" に変わります。メソッド(GET/POST/PUT/DELETE …)は、サーバに「何をしたいか」を伝える動詞です。診断では「GET しか想定していない所に POST を送ったら?」のように、想定を外した組み合わせを試します。
ヘッダを足す
-H でヘッダを好きなだけ足せます。
curl -s -H "X-Demo: 1" "http://127.0.0.1:4610/hello"
返ってきた headers に "x-demo": "1" が増えています。ここで大事な感覚を一つ。
ヘッダは、送る側が自由に書ける自己申告です。User-Agent も X-Forwarded-For も、値はいくらでも詐称できます。「このヘッダに管理者と書いてあるから管理者」のように、サーバが自己申告を無条件に信じていると、そこが穴になります。この「ヘッダは信じられない」感覚は、あとの認可の章でそのまま効いてきます。
次章は、ヘッダの中でも特に重要な Cookie と、ボディを持つ POST です。
こうなっていればOK
卒業まであと2章です。
この章はまだ完了していません。
保存できませんでした(プライベートブラウズ中かもしれません)。この端末に進捗は残りませんが、先へは進めます。