私の理解が正しければ、ここで 3 つのシステムが相互に作用しています。
- クライアント (HTML/JavaScript)
- サーバー (ASP.NET)
- リモートサーバー (使用するテクノロジーは重要ではありません)
それでも正しく理解している場合、シナリオはクライアントがリモートサーバーにリクエストを行っているが、サーバーはそのリクエストの結果を知る必要があるということですか?
リクエストはクライアントとリモート サーバーの間で行われるため、サーバーは関与せず、リモート サーバーから直接応答を受け取ることはできません。ただし、クライアントはこのやり取りを処理できます。1 つのアプローチは次のようなものです。
- クライアントがリモート サーバーに要求を出す
- クライアントがリモート サーバーから応答を受信し、エラーまたはリダイレクトの実行を示します
- エラーの場合、クライアントはサーバーにエラーを通知します (おそらくユーザーにも通知します)
- リダイレクトの場合、クライアントはサーバーに成功を通知し、リダイレクトを実行します。
ほとんどの擬似コードでは、次のようになります。
$.ajax({
url: 'http://remoteserver/request_target'
}).done(function(data, textStatus, jqXHR) {
// success, notify Server and redirect
$.post('http://server/success_handler', successData)
.done(function () {
window.location.replace('http://remoteserver/redirect_target');
});
}).fail(function(jqXHR, textStatus, errorThrown) {
// fail, notify Server
$.post('http://server/error_handler', errorData);
});
最初に、リモート サーバーへの AJAX 要求を実行します。リクエストが成功すると、サーバーに対して AJAX リクエストを実行して成功を通知し、そのリクエストの後にリダイレクトを実行します。Remote Server へのリクエストが失敗した場合は、Server に AJAX リクエストを実行してエラーを通知します。(何を入れるか、successData
またはerrorData
、もしあれば、サーバーに送信する必要があるものは何でも構いません。)