1. 程式人生 > >web---請求轉發和重定向的區別

web---請求轉發和重定向的區別

如圖:左為forward的請求流程圖,右為redirect的請求流程圖

在這裡插入圖片描述

1. forward 是一次完整的請求和響應,是伺服器內控制權的轉發。可以由servlet接收請求,但把返回響應的權利通過forward給jsp來完成

2. redirect會在第一次響應返回時用狀態碼302和一個location頭來告知瀏覽器,再發一個請求給location所指向的url地址,整個流程需要兩次請求

3. 表現形式上: forward 轉發瀏覽器位址列地址總是第一個訪問的servlet地址,轉發地址對瀏覽器是隱藏的;而redirect,瀏覽器的位址列地址是最後轉發頁面的目標地址,對瀏覽器可見。

4. forward 對應一次請求,因此可以利用request作用域傳遞資訊;而 redirect 對應兩次請求,只能使用session作用域或在重定向地址後面帶參的方式來傳遞資訊。(session只要在一個瀏覽器裡即可,可以實現多次請求,forward只能實現一次請求)

5. redirect後的url可以是站外地址,這個特性常常用來與第三方應用做互動呼叫;而 forward 僅能做本站轉發,不能訪問站外資源。