Expect

HTTP の Expect リクエストヘッダーは、リクエストを正しく扱うためにサーバーが実行する必要があると期待されていることを示します。

仕様書で定義されている期待は Expect: 100-continue だけで、サーバーが応答するべきことは以下の通りです。

  • ヘッダーに含まれている情報で、直ちに成功とする条件を満たしているのであれば 100
  • 期待に沿うことができなければ 417 (Expectation Failed)。それ以外であれば他の 4xx 状態になります。

例えば、サーバーは Content-Length が長すぎるとリクエストを拒否する可能性があります。

Expect ヘッダーを送信するブラウザーはあまりありませんが、 cURL のような一部の他のクライアントは既定で送信します。

ヘッダー種別 リクエストヘッダー
禁止ヘッダー名 はい

構文

現在は "100-continue" 以外の期待は定義されていません。

Expect: 100-continue

ディレクティブ

100-continue

クライアントがこの要求で (おそらく大規模な) メッセージ本文を送信しようとしていることを受信者に通知し、 100 (Continue) 暫定応答を受信することを期待します。

巨大なメッセージ本文

クライアントは Expect ヘッダーで要求を送信し、メッセージ本文を送信する前にサーバーが応答するのを待ちます。

PUT /somewhere/fun HTTP/1.1
Host: origin.example.com
Content-Type: video/h264
Content-Length: 1234567890987
Expect: 100-continue

サーバーはリクエストヘッダーをチェックし、 100 (Continue) 応答を返信して、クライアントにメッセージ本体を送信するよう指示するか、又は期待に沿わない場合は、 417 (Expectation Failed) 状態になります。

仕様書

仕様書 題名
RFC 7231, セクション 5.1.1: Expect Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content

ブラウザーの対応

関連情報

  • 417 Expectation Failed
  • 100 Continue