請求轉發與重定向區別
先來了解一下什麼事請求轉發和重定向。
舉一個例子說明:
假如小王向我借錢100萬,但此時我沒有這麼多錢,我向小李借了100萬,然後再借給小明,這種方式可以理解爲請求轉發。
如果我沒有向小李借錢,而是告訴小王:“小李有100萬,你去向他借”。然後小王向小李去借錢了。這種方式可以理解爲重定向。
請求轉發與重定向都可以讓瀏覽器獲得另外一個URL所指向的資源,但兩者的內部運行機制有很大的區別:
1、轉發只能將請求轉發給同一個Web應用中的組件;而重定向可以重定向到當前應用程序中的其他資源,同一個站點上的其他應用程序中的資源,或者其他站點的資源。
2、重定向的訪問過程結束後,瀏覽器地址欄中顯示的URL會發生改變,變成重定向的目標URL;
而請求轉發過程結束後,瀏覽器地址欄保持初始的URL地址不變。
3、重定向對瀏覽器的請求直接作出響應,響應的結果就是告訴瀏覽器去重新發出對另外一個URL的訪問請求;請求轉發在服務器端內部將請求轉發給另一個資源,瀏覽器只知道發出了請求並得到了響應結果,並不知道在服務器程序內部發生了轉發行爲。
4、請求轉發調用者與被調用者之間共享相同的request對象和response對象,他們屬於同一個訪問請求和響應過程;而重定向調用者與被調用者使用各自的request對象和response對象,他們屬於兩個獨立的訪問請求和響應過程。