轉發(forward)與重定向(redirect)

轉發(forward)

是服務器請求資源,服務器直接訪問目標資源地址的URL,讀取併發送目標URL返回的內容到瀏覽器,這個過程瀏覽器是不知道,瀏覽器的地址欄仍是原來的地址。
轉發的路徑必須是同一個web容器下的url,其不能轉向到其餘的web路徑上去,中間傳遞的也是本身的容器內的request,故轉發頁面和轉發到的頁面能夠共享request裏面的數據。web

重定向(redirect)

是服務器根據處理邏輯,返回一個302狀態碼和新請求地址,告訴瀏覽器從新去請求這個url,這時瀏覽器的地址欄就會變成新的URL。由於是瀏覽器從新請求目標地址,因此這個新地址能夠重定向到容易的URL,而且兩次請求的request是不共享的。瀏覽器

總結

轉發是服務器行爲,重定向是客戶端行爲。服務器

二者的內部機制有很大的區別:併發

  • 請求轉發只能將請求轉發給同一個WEB應用中的組件,而重定向還能夠從新定向到同一站點不一樣應用程序中的資源,甚至能夠定向到一絕對的URL。
  • 重定向能夠看見目標頁面的URL,轉發只能看見第一次訪問的頁面URL,之後的工做都是有服務器來作的。
  • 請求轉發調用者和被調用者之間共享相同的request對象和response對象,重定向調用者和被調用者屬於兩個獨立訪問請求和響應過程。
  • 重定向跳轉後必須加上return,要否則頁面雖然跳轉了,可是還會執行跳轉後面的語句,轉發是執行了跳轉頁面,下面的代碼就不會在執行了。

參考url

相關文章
相關標籤/搜索