1. 程式人生 > >server.Transfer()和response.redirect()區別

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發生改變
        這樣使用者才會明顯的發現頁面發生了跳轉