1. 程式人生 > >HTTP重定向和請求轉發

HTTP重定向和請求轉發

概念區分

請求轉發是伺服器內部的事情,比如在Java web中,一個HTTP請求到來會開啟一個執行緒並分配一個 Servlet 去進行處理,JSP檔案同樣是一個Servlet,在伺服器內部可能將請求轉發到一個JSP並處理。但是這個過程,客戶端是看不到的,他所知道的只是一次請求對應返回了一個響應。
在重定向中,客戶端給服務端傳送了一個HTTP請求,服務端返回一個狀態碼為301(永久重定向)或302(臨時重定向)的請求,這樣客戶端收到響應,會去檢視HTTP 頭中的Location欄位,然後再向 Location 發起新的請求。

實際應用

請求轉發,可以理解為不同模組之間組成了一個完整的邏輯處理流程。

重定向,可以是有多個伺服器,客戶端從其中一個伺服器請求code後,帶上code去另一個伺服器執行一些操作。
比如在開發微信公眾號的過程中,經常有使用者在公眾號中開啟微信,訪問我們網站的場景,為了授權我們需要這個使用者的微信ID。微信的做法就是採用重定向的方式,使用者在公眾號中訪問的網址是 :

就是先去微信的server獲取使用者的code,然後微信返回重定向相應,這樣客戶端就會帶著code 去請求我們的伺服器,此後真正和客戶端進行通訊的其實就是我們自己的伺服器了。
重定向也就類似於多個伺服器之間間接通訊。