2008-10-07 83 views
1

這有點奇怪....我們有一個內部Web應用程序運行在服務器(A)和一個運行在服務器(B)上的文檔存儲庫。從外部從內部服務器下載文檔

我在頁面上有簡單的鏈接,我想讓用戶下載文檔(從IIS服務器(A))。但是,在用戶單擊按鈕之前,服務器(A)上不存在此文檔,直到用戶單擊該按鈕爲止(因爲有40多個文檔顯示無法在頁面加載時加載它們)

當用戶單擊鏈接時然後提示下載) 將文檔複製到服務器(A),然後重定向到瀏覽器提示他們下載的頁面。我相信我已經正確設置了內容標題,並且它在FireFox中有效。 (7)只是彈出一個窗口,然後窗口消失,如果我拒絕安全設置它工作正常,但這不是一個選項。

任何想法如何解決這個問題。我不能直接指向文件服務器(B)上

此外:是的服務器B也是一個Web服務器

回答

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,這在技術上是由反向代理創建web連接(從服務器a到服務器b並將HTTP響應複製到服務器a的響應)發生的。

讓我知道你是否需要任何幫助。

0

你可以使用Ajax?例如,用戶點擊發送請求的按鈕,以從B到A獲取文件,並在頁面上顯示一個微調器。然後,複製完成後,您將禁用微調器併爲用戶提供下載鏈接。

我被否決,並沒有評論的權限,所以我想我會細說了(也許這只是一個可怕的解決方案,我不能看到它):

  1. 用戶通過點擊鏈接請求的文件
  2. 請求被髮送到服務器A,它通過AJAX禁用鏈接
  3. 服務器A將文件複製到從服務器B的臨時目錄
  4. 服務器A發送回一個鏈接到文件中的臨時文件夾

如果文檔服務器不是網絡服務器(SMB,AFS,NFS等),這將工作。

+0

「任何想法如何解決這個問題。我不能直接指向服務器(B)上的文檔」,因爲這最後一句話不能完成。 – 2008-10-07 11:26:18

+0

這非常糟糕,因爲它依賴於不必要的操作,例如禁用鏈接。您可以輕鬆點擊鏈接下載文件,然後使用該文件進行響應,無需使用所有AJAX。無論如何,瀏覽器將在等待響應時被鎖定。 – 2008-10-08 11:10:10

相關問題