3

Indy の HTTP サーバー上に構築された Web サーバーで作業していますが、ブラウザーで要求をクリックし、最初の要求の処理が完了する前に別の要求をクリックすると、あらゆる種類の問題が発生する可能性があることがわかりました。 . しかし、キャンセルされたリクエストに含まれているかどうかを判断する方法が見つかりません。各リクエストは独自のスレッド内で発生するため、スレッドを終了済みに設定することは確認する良い方法ですが、それは起こっていないようです。

現在処理中のリクエストが送信元のブラウザによってキャンセルされ、代わりに別のものをロードしようとしていることを Indy に知らせる方法はありますか?

4

1 に答える 1

5

Webブラウザが進行中のHTTPリクエストをキャンセルできる唯一の方法は、サーバーへの接続を閉じることです。その場合、TIdHTTPServerは、切断されたソケットに次にアクセスしようとしたときに例外を発生させます。例外をTIdHTTPServerに渡してデフォルトの処理を行うだけで、呼び出し元のスレッドを終了してソケットをクリーンアップできます。これは正常な動作です。

于 2012-05-26T22:03:59.693 に答える