2012-09-11 47 views
2

我正在使用Response.Redirect提供媒體文件,但不希望人們看到文件或子域(主機)的直接url。是否有可能僞造'get',並隱藏主機和引用者?隱藏所有重定向信息

+0

你將不得不基本上做一個「服務器端重定向」的形式。這基本上意味着你將它下載到你的服務器上,然後客戶端從你的服務器上下載它。除非你有很好的理由這樣做,否則效率很低。 – Earlz

回答

3

使用Server.Transfer將請求處理轉移到另一個頁面。

當您使用Transfer方法時,傳輸中包含所有 內置對象的狀態信息。這意味着任何 變量或對象在會話或 應用程序範圍中都被賦值。此外,Request集合的所有當前 內容都可用於接收傳輸的.asp文件 。

Server.Transfer充當Response.Redirect方法的高效替代方案 。 Response.Redirect指定瀏覽器 請求一個不同的頁面。由於重定向強制請求新頁面,瀏覽器向Web服務器發出兩個請求,因此Web服務器處理額外的請求。 IIS 5.0引入了一個新功能,即 Server.Transfer,它將執行轉移到服務器上的另一個ASP頁面 。這可以避免額外的請求,從而提高整體系統性能以及更好的用戶體驗。

由於瀏覽器沒有發出其他請求,該網址對瀏覽器是完全隱藏的,但它仍然會獲取將由您的重定向url提供的文件。

+0

這完美地使我的網絡服務器上的文件的工作。重定向時顯示0信息。 –

+0

這與我發現重定向流的方法一起使內部和外部鏈接都被掩蓋了。 http://stackoverflow.com/questions/12339322/response-redirect-a-download-in-progress/12362804 –

1

你想要什麼是不可能的 - 出於一個簡單的原因:要讓客戶端從另一個來源直接下載文件,您需要以某種方式向客戶端傳遞有關位置的信息:如果客戶端不不知道位置,它不能從那裏下載。

無論您嘗試什麼方式的混淆,如果它可以解碼爲客戶端瀏覽器,它可以解碼爲人類與螢火蟲武裝。

+0

非常真實。我最終爲外部鏈接所做的是通過下載帶有緩衝區的外部文件並在下載時將緩衝區寫入響應來重定向流。 –