【JavaWeb雜記-01】重定向和轉發的區別
阿新 • • 發佈:2020-10-14
JavaWeb雜記-01】重定向和轉發的區別
1、啥是重定向(Redirect)?啥是轉發(Forward)?
【重定向】
客戶向伺服器傳送請求後,伺服器處理完返回訊息給客戶端告知需再發送一次固定內容的請求,客戶端便再次傳送了一個請求從而跳轉至新頁面
【轉發】
客戶端向伺服器傳送請求後,伺服器處理完之後把之前請求所攜帶的傳輸資訊(在JavaWeb中為request和response物件)一同轉發至下一個元件或網頁
2、有什麼區別?
1、位址列不同(表面)
- 轉發:位址列不變,並不會顯示出所轉向的地址
- 重定向:位址列改變,顯示轉向之後的地址
2、“請求 - 響應” 的次數和行為物件不同
- 轉發:整個過程只有一次,且屬於伺服器的行為,由伺服器區發出請求,客戶端並不知曉,所以客戶端遊覽器中是不會顯示出轉向的地址
- 重定向:整個過程至少涉及兩次“請求 - 響應” ,且屬於客戶端行為,是伺服器告訴客戶端需要轉向特定的地址,然後客戶端再自己去請求轉向地址,因此是會顯示出轉向的地址
3、速度不同
- 轉發:轉發是在同一臺伺服器上完成,速度較快
- 重定向:重定向需要經過數次客戶端,在多臺不同的伺服器上完成,速度較慢
4、所攜帶的資訊處理不同
- 轉發:不會丟失所攜帶的資訊
- 重定向:會丟失所攜帶的資訊
3、如何選擇?
1、轉發速度快
2、轉發只能訪問當前的web應用程式,當需要訪問別的web應用程式上的資源的時候便只能使用重定向