Slate Errors

Informational (1xx)

100

Continue

— 続けてください

まずは確認: よくある原因 TOP3

  1. クライアントが Expect: 100-continue を送った
    大きな本文を送る前に、サーバーに「受け入れ可能か」を確認している
  2. PUT/POST で巨大なボディを送る前置き
    拒否されるなら無駄な送信を避けたいという気遣いの結果
  3. HTTP/1.1 仕様準拠のクライアント実装
    curl や一部のライブラリが自動で付ける

これは何のサイン?

100 は「リクエストの続きを送ってきていいよ」というサーバーからの予備的な承認サインです。 校庭での朝礼に例えると、整列したクラスに対して先生が「うん、揃ったね。続けて始めて大丈夫」と頷いてくれる——そんな小さな OK のサインに似ています。

技術的には、クライアントが Expect: 100-continue ヘッダ付きでリクエストを始めたとき、サーバーは「本文 (ボディ) を送ってきてよし」とだけ先に返します。重いファイルや大きなデータを送る前に、無駄足になっていないかを確認する優しい仕組みです。

校庭からのひとこと

朝礼の前、生徒たちは一列に並んで先生の合図を待ちます。先生は全体を見渡し、「よし、揃った。話を続けるね」と一言かけてから本題に入ります。100 はちょうどこの「先生からの合図」と同じ役割です。

最終的な評価ではなく、途中の中継ぎとして「ここまでは大丈夫」と伝える。この後にもう一段、本番の応答 (200 など) が必ず続きます。100 だけで会話が終わることはありません。

受け止め方

受け取ったら、こうしよう:

  1. そのまま本文の送信を続行:100 は「続けて OK」のサイン、リクエストボディを送り出してよい
  2. 最終応答 (200 など) を待つ:100 は途中経過、本番の判定はその後にやってくる
  3. HTTP クライアントのログを確認:100 が出ていれば Expect ヘッダが効いている証
  4. サーバー側の対応状況を確認 (管理者向け):プロキシやロードバランサが 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>

似ているケース

もっと知りたい