HTTP 100ステータスコード
100 (続行) 要求者は要求を続行する必要があります。サーバーは、リクエストの最初の部分を受信し、残りを待っていることを示すためにこのコードを返します。
サーバーは、クライアントの要求ヘッダーに基づいて、クライアントの要求を受け入れるかどうかを決定します。リクエストが受け入れられると、ステータス コード 100 が返されます。サーバーは、Expect: 100-Continue リクエスト ヘッダーがあるかどうかに基づいて、Expect リクエストであるかどうかを判断します (一部の Web サーバーは Expect リクエストを正しく処理できません)
このステータス コードは、サーバーがリクエストの最初の部分に到達し、クライアントが送信を続けるように求められたことを示します。サーバーは 100 Continue ステータス コードを送信した後、クライアントからリクエストを受信した場合に応答する必要があります。
このステータス コードは、実際には次のシナリオに最適化されたものです。クライアントには、アップロードして保存する必要があるより大きなファイルがありますが、クライアントはサーバーがそのファイルを受け入れるかどうかわからないため、ネットワークを消費することを望んでいます リソースを転送する前に、サーバーにその要求を尋ねます。実際の操作は、クライアントが特別なリクエスト メッセージを送信することです。メッセージのヘッダーには
Expect: 100-continue
が含まれている必要があります。この時点で、サーバーがそれを受け入れる場合は、100 Continue ステータス コードが返されます。そうでない場合は、417 Expectation Failed ステータス コードが返されます。クライアントの場合、実際のリクエストを送信するつもりがない場合は、100 Continue Expect を含むメッセージを送信すべきではありません。これは、サーバーがクライアントがリクエストを送信しようとしていると誤って認識するためです。
前述したように、すべての HTTP アプリケーションが 100 Continue ステータス コード (HTTP/1.0 および以前のバージョンのプロキシまたはサーバーなど) をサポートしているわけではないため、クライアントは、待機後に 100 Continue Expect を送信し続ける必要はありません。サーバーの応答に応じて、一定の時間が経過した後、クライアントは送信予定のコンテンツを直接送信する必要があります。
サーバーに関しては、100コンティニューは厳密な判定方法ではありません。サーバーは、応答を送信する前にクライアントから本文メッセージを受信している可能性があります。この時点で、サーバーは応答として 100 Continue を送信する必要がなくなりました。ただし、受け入れが完了した後も、適切なステータス コードを返す必要があります。理論的には、サーバーが 100 Continue Expect リクエストを受信すると、応答する必要があります。ただし、サーバーは、100 Continue Expect リクエストを送信しなかったクライアントに応答して 100 Continue ステータス コードを送信してはなりません。ここで言う応答とは、サーバーがクライアントから送信される本文メッセージを受信するつもりがないと仮定して、単に接続を閉じるのではなく、適切な応答 (417 Expectation Failed を送信するなど) も行う必要があることを意味します。クライアントの問題、ネットワークレベルでの影響。
特に、プロキシとしての HTTP アプリケーションは、100 Continue Expect のリクエストを受信した場合に追加の判断を行う必要があります。プロキシ サーバーが、メッセージのダウンストリーム HTTP バージョンが HTTP/1.1 と互換性があることを明確に知っている、またはプロキシ サーバーがメッセージのダウンストリーム バージョンを知らないと仮定すると、この 100 Continue Expect リクエストを転送する必要があります。ただし、プロキシ サーバーがメッセージの下流のアプリケーションが 100 Continue Expect を処理できないことを明確に認識している場合は、応答として 417 Expectation Failed をクライアントに直接返す必要があります。これが唯一の解決策ではなく、100 Continue をクライアントに直接返し、100 Continue Expect を削除したメッセージをダウンストリームに渡すことも考えられます。
さらに、プロキシ サーバーが HTTP/1.0 以前のバージョンを提供することを決定した場合、サーバーから 100 Continue 応答メッセージを受信したときに、この応答をクライアントに転送すべきではありません。メッセージをどうすればいいのかわかりません。