これは何のサイン?
100 は「リクエストの続きを送ってきていいよ」というサーバーからの予備的な承認サインです。 校庭での朝礼に例えると、整列したクラスに対して先生が「うん、揃ったね。続けて始めて大丈夫」と頷いてくれる——そんな小さな OK のサインに似ています。
技術的には、クライアントが Expect: 100-continue ヘッダ付きでリクエストを始めたとき、サーバーは「本文 (ボディ) を送ってきてよし」とだけ先に返します。重いファイルや大きなデータを送る前に、無駄足になっていないかを確認する優しい仕組みです。
校庭からのひとこと
朝礼の前、生徒たちは一列に並んで先生の合図を待ちます。先生は全体を見渡し、「よし、揃った。話を続けるね」と一言かけてから本題に入ります。100 はちょうどこの「先生からの合図」と同じ役割です。
最終的な評価ではなく、途中の中継ぎとして「ここまでは大丈夫」と伝える。この後にもう一段、本番の応答 (200 など) が必ず続きます。100 だけで会話が終わることはありません。
受け止め方
受け取ったら、こうしよう:
- そのまま本文の送信を続行:100 は「続けて OK」のサイン、リクエストボディを送り出してよい
- 最終応答 (200 など) を待つ:100 は途中経過、本番の判定はその後にやってくる
- HTTP クライアントのログを確認:100 が出ていれば Expect ヘッダが効いている証
- サーバー側の対応状況を確認 (管理者向け):プロキシやロードバランサが Expect を正しく中継しているか 設定を見直す
実際にはこう見える
$ リクエスト
curl -i https://example.com/some/path ↓ レスポンス
HTTP/1.1 100 Continue
Content-Type: text/html; charset=utf-8
<!DOCTYPE html>
<html><body><h1>100 Continue</h1></body></html>