100 Continue は暫定レスポンス(情報レスポンス)です。サーバーがリクエストヘッダーを受信して拒否しておらず、リクエストボディを受け取る準備ができていることをクライアントに伝えます。最終レスポンス(たとえば 201 Created や 413 Content Too Large)は、その後に同じ接続で返されます。
このコードは、大きなアップロードのために用意されています。何 MB ものデータを送ったあとで拒否されるのを避けたいクライアントは、リクエストに Expect: 100-continue を付けて少し待ちます。サーバーが 100 Continue を返せばボディを送信し、401 や 413 などの最終的なエラーが返ってくれば、アップロードを省略できます。この期待に応えられないサーバーは、417 Expectation Failed を返すことがあります。
ブラウザーが自分から Expect: 100-continue を送ることはありません。これを使うのは、HTTP ライブラリ、curl などのコマンドラインツール、ファイルをアップロードする API クライアントです。クライアントはいつまでも待つわけではなく、短いタイムアウト(curl のデフォルトは 1 秒)以内に 100 が届かなければ、そのままボディを送信します。なお、サーバーは HTTP/1.0 のクライアントに 1xx レスポンスを送ってはいけません。
レスポンス例
HTTP/1.1 100 Continue
HTTP/1.1 201 Created
Date: Fri, 06 Nov 2026 10:15:32 GMT
Location: /uploads/7f3c9a2e
Content-Length: 0 SEO とリダイレクトチェック
100 がページのステータスとして検索エンジンに届くことはありません。必ず最終レスポンスが後に続き、クローラーやリダイレクトチェッカーが報告するのはその最終ステータスです。暫定レスポンスは HTTP クライアントが内部で処理するため、TrueURL も、その前に返された 100 Continue ではなく各ホップの最終ステータスを表示します。
よくある原因と主な用途
- API クライアントや curl が
Expect: 100-continueを付けて大きなボディをアップロードし、サーバーが受信に同意した場合。 - リバースプロキシやアプリケーションサーバーが、アプリケーションに代わってこの期待に応答している場合。
- アップロードが始まるまで 1 秒ほど止まる場合。サーバーが送ってこない
100 Continueを、クライアントが待っています。クライアント側でこの Expect を無効にするか、サーバー側で対応してください。