1

これはちょっと変わったものです... サーバー (A) で実行される内部 Web アプリと、サーバー (B) で実行されるドキュメント リポジトリがあります。

ページに簡単なリンクがあり、ユーザーがドキュメントをダウンロードできるようにしたい (IIS サーバー (A) から)。ただし、このドキュメントは、ユーザーがボタンをクリックするまでサーバー (A) には存在しません (表示するドキュメントが 40 以上あるため、ページの読み込み時にすべてを読み込むことができません)。

ユーザーがリンクをクリックすると (その時点でダウンロードを求められます)、ドキュメントはサーバー (A) にコピーされ、ブラウザーがダウンロードを求めるページにリダイレクトされます。コンテンツ ヘッダーを正しく設定して、FireFox で動作すると思います。

IE(7) はウィンドウをポップアップするだけで、ウィンドウが消えます。セキュリティ設定を下げると、問題なく動作しますが、それはオプションではありません。

これを解決する方法についてのアイデア。サーバー (B) 上のドキュメントを直接参照することはできません

追加: はい、サーバー B も Web サーバーです。

4

2 に答える 2

5

世界がサーバー A を認識でき、サーバー A がサーバー B を認識できる場合、リバース プロキシを設定することをお勧めします。

http://www.codeplex.com/urlrewriter

基本的にこれが行うことは、世界がサーバー B からダウンロードできるようにすることですが、リバース プロキシを介してのみ行うことができます。上記のライブラリを使用して、次のルールでリバース プロキシ インターフェイスを作成できます。

RewriteRule ^/download/(.*) http://server-b/download/ $1 [NC,P]

だからの場合

http://server-a/download/xyz.pdf

実際にリクエストするのは

http://server-b/download/xyz.pdf

しかし、それはあたかもサーバー a から来ているかのように配信されます。これは技術的には、リバース プロキシがサーバー a からサーバー b への Web 接続を作成し、HTTP 応答をサーバー a の応答にコピーすることによって発生します。

助けが必要な場合はお知らせください。

于 2008-10-07T11:19:39.890 に答える
0

ajaxは使えますか?たとえば、ユーザーがボタンをクリックしてリクエストを送信し、B から A にファイルを取得すると、スピナーがページに表示されます。コピーが完了したら、スピナーを無効にして、ユーザーにダウンロード リンクを提供します。

私は反対票を投じられ、コメント権限を持っていないので、ここで詳しく説明しようと思いました (おそらくこれはひどい解決策であり、私には見えません):

  1. ユーザーはリンクをクリックしてファイルを要求します
  2. リクエストはサーバーAに送信され、ajax経由でリンクが無効になります
  3. サーバー A はファイルをサーバー B から一時ディレクトリにコピーします。
  4. サーバー A は、一時フォルダー内のファイルへのリンクを返信します。

これは、ドキュメント サーバーが Web サーバー (SMB、AFS、NFS など) でない場合に機能します。

于 2008-10-07T11:16:45.823 に答える