server.Transfer()和response.redirect()區別
注意server.Transfer()和response.redirect()都是是實現頁面的重定向(頁面跳轉), 但是兩者有很大的不同
Response.Redirect()
1.需要客戶端(瀏覽器)與服務端進行兩次通訊
首先瀏覽器向客戶端傳送一次請求,瀏覽器接受請求返回一個302狀態碼和新的url
之後瀏覽器會對新的url傳送一個請求,實現頁面的跳轉
2.跳轉之後瀏覽器顯示的url發生改變
3.使用response.redirect()從a頁面跳轉到b頁面之後,就無法接收a頁面中的表單中的資料
4.response.redirect()可以從一個跨伺服器跨站點跳轉
Server.Transfer()
1.server.Transfer()是在IIS5.0之後才新加的
2.server.Transfer()跳轉只需要客戶端和服務端一次通訊,跳轉在服務端實現
因此並不會佔用較多的 HTTP 請求,因此這可以減輕伺服器的壓力,使你的伺服器執行更快
3.server.Transfer()實現跳轉,瀏覽器URL上並沒有看到有重定向痕跡,
如果用Server.Transfer方法實現頁面之間的導航,瀏覽器中的URL不會改變,
因為重定向完全在伺服器端進行,瀏覽器根本不知道伺服器已經執行了一次頁面變換。
4.使用server.Transfer()實現a頁面到b頁面的跳轉,b頁面可以接收a頁面中的表單資料
5.server.Transfer()只能從在同一伺服器端的同一站點間執行,
所以你不能用 Server.Transfer 將使用者重定向到另一伺服器上的站點。
注意:其實雖然server.Transfer()的效率比response.redirect()高
但是我們一般是使用response.redirect(),只是因為我們希望瀏覽器位址列中的url發生改變
這樣使用者才會明顯的發現頁面發生了跳轉