Java Servlet API (HttpServletResponse) を使用してリクエスト全体を処理した後、「100 Continue」HTTP ステータス コードを送信し、後で他のステータス コードを送信することはできますか?
APIはサポートしていないようですが、決定的な「いいえ」の答えは見つかりません。
Java Servlet API (HttpServletResponse) を使用してリクエスト全体を処理した後、「100 Continue」HTTP ステータス コードを送信し、後で他のステータス コードを送信することはできますか?
APIはサポートしていないようですが、決定的な「いいえ」の答えは見つかりません。
「100コンティニュー」という意味だと思います。
答えは: いいえ、できません (少なくとも、暫定的な応答として意図した方法ではありません)。一般に、サーブレット エンジンは、リクエストで必要な場合に自動的に実行します。もちろん、これにより、サーブレットが 100 ステータスの送信を防止することは不可能になります。この問題は、サーブレット API の既知の問題であり、今では長年のように感じられることで知られています。
Jetty が 100 を送信する前に getReader() または getInputStream() が呼び出されるまで待機することはわかっています。これがあなたが探している動作だと思います。Tomcatが何をするのかわかりません。
ヘッダーフィールドがないために進行中のリクエストを中断するために、完全なリクエストを受信する前にステータスコードを送信するにはどうすればよいですか?標準のサーブレットでは不可能なようです。
どのサーバーを使用していますか?
一部のサーバーのサーブレット拡張機能ではこれが許可される場合があります。たとえば、TomcatのCometサーブレットは、ヘッダーの処理が可能になるとEventType.BEGINを送信する場合があります。これにより、正しい認証がないPUTを中断できる場合があります。
または、サーバーにヘッダーに基づいてリクエストを拒否するプラグインがある場合があります。
ステータスコード100 のことですか?
APIは SC_CONTINUEの送信をサポートしています。