3

私のアプリケーションは、すべてのクライアントの最初のアクセス ポイントである「ゲートウェイ」DataSnap REST サーバーで構成されています。クライアントが要求 (基本認証) で渡すユーザー名によっては、要求を別の DataSnap サーバーにリダイレクトする必要があります。私の質問 - 「ゲートウェイ」サーバーを構築して、ユーザー名または HTTP 要求ヘッダーの他の値に基づいて、要求が何であれ、別のサーバーに単にリダイレクトする方法はありますか? 「ゲートウェイ」サービスですべてのサーバー メソッドを繰り返す必要がないようにしています。つまり、2 つのリクエストを「チェーン」するのではなく、1 つのリクエストだけをリダイレクトしたいのです。

これが可能かどうかはわかりませんが、誰かが私が間違っていると証明するかもしれないと思いましたか? 私は Delphi XE2 を使用しており、DataSnap サーバーは Windows サービスです。

4

2 に答える 2

2

ここに 2 つのオプションがあります。

  • ログイン後に実サーバーのアドレスを返すためにのみ最初のサーバーを使用する

また

  • Datasnap サーバーの前で Apache または NGINX リバース プロキシを使用し、認証データに基づいて RewriteRules を使用します (ただし、今日の私の Google-Fu は使い果たされているようですが、これは SO の HTTP / Apache 仕様の質問として配置できる可能性があります)。
于 2013-06-16T19:48:47.993 に答える
0

短いバージョン: 解決策は、リクエストのターゲットがどこであるかを知っているレベル (HTTP、DataSnap、その間) によって異なります。

DataSnap レベルで決定できる場合、2 種類の解決策があります。

  • これを行うための純粋な方法は、datasnap ターゲット サーバーに問い合わせることができる汎用の DataSnap ゲートウェイを作成し、プロキシ サーバーとクライアントの両方を動的に作成し、トラフィックをインターセプトして、どの datasnap ターゲット サーバーにリクエストを渡すかを決定することです。
  • より実用的なアプローチは、あなたが恐れているものです。

もう 1 つのアプローチは、HTTP レベルです。これは、リクエストをどのターゲット サーバーに渡す必要があるかを HTTP レベルで判断できる場合にのみ機能します。

于 2013-06-16T17:59:50.313 に答える