參考博客:https://www.cnblogs.com/Qian123/p/5345527.html
重定向:
1豹缀、是客戶端行為,瀏覽器請求服務(wù)器成功后慨代,獲取到302狀態(tài)碼邢笙,重新請求新的url,并且地址欄會變化
2侍匙、不會攜帶已有的reauest參數(shù)
3氮惯、一般在退出登錄銷戶時進行重定向
4、而且歷史的回退按鈕也亮了想暗。重定向可以訪問自己web應(yīng)用以外的資源妇汗。在重定向的過程中,傳輸?shù)男畔粊G失
5说莫、過程:客戶瀏覽器發(fā)送http請求----》web服務(wù)器接受后發(fā)送302狀態(tài)碼響應(yīng)及對應(yīng)新的location給客戶瀏覽器--》客戶瀏覽器發(fā)現(xiàn)是302響應(yīng)杨箭,則自動再發(fā)送一個新的http請求,請求url是新的location地址----》服務(wù)器根據(jù)此請求尋找資源并發(fā)送給客戶储狭。在這里 location可以重定向到任意URL互婿,既然是瀏覽器重新發(fā)出了請求捣郊,則就沒有什么request傳遞的概念了。在客戶瀏覽器路徑欄顯示的是其重定向的路徑慈参,客戶可以觀察到地址的變化的呛牲。重定向行為是瀏覽器做了至少兩次的訪問請求的。
轉(zhuǎn)發(fā):
1驮配、是服務(wù)器行為侈净,瀏覽器請求服務(wù)器成功后,服務(wù)器返回目標(biāo)url的內(nèi)容僧凤,而瀏覽器本身不知道內(nèi)容是什么,并且狀態(tài)欄地址不會變化元扔,它只知道最開始請求的A地址是xxx躯保,B C D就不知道了(302 Found,原始描述短語為 Moved Temporarily澎语,是HTTP協(xié)定中的一個狀態(tài)碼途事。可以簡單的理解為該資源原本確實存在擅羞,但已經(jīng)被臨時改變了位置尸变;換而言之,就是請求的資源暫時駐留在不同的URI下)
2减俏、會共享已有的request參數(shù)
3召烂、一般在登錄成功之后,轉(zhuǎn)發(fā)相應(yīng)的功能業(yè)務(wù)所在的資源上
4娃承、只能轉(zhuǎn)發(fā)到同一web路徑下的url上
5奏夫、過程:客戶瀏覽器發(fā)送http請求----》web服務(wù)器接受此請求--》調(diào)用內(nèi)部的一個方法在容器內(nèi)部完成請求處理和轉(zhuǎn)發(fā)動作----》將目標(biāo)資源發(fā)送給客戶;在這里,轉(zhuǎn)發(fā)的路徑必須是同一個web容器下的url历筝,其不能轉(zhuǎn)向到其他的web路徑上去酗昼,中間傳遞的是自己的容器內(nèi)的request。在客戶瀏覽器路徑欄顯示的仍然是其第一次訪問的路徑梳猪,也就是說客戶是感覺不到服務(wù)器做了轉(zhuǎn)發(fā)的麻削。轉(zhuǎn)發(fā)行為是瀏覽器只做了一次訪問請求。
兩者的內(nèi)部機制有很大的區(qū)別:
1 請求轉(zhuǎn)發(fā)只能將請求轉(zhuǎn)發(fā)給同一個WEB應(yīng)用中的組件春弥,
而重定向還可以重新定向到同一站點不同應(yīng)用程序中的資源呛哟,甚至可以定向到一絕對的URL。
2 重定向可以看見目標(biāo)頁面的URL惕稻,
轉(zhuǎn)發(fā)只能看見第一次訪問的頁面URL竖共,以后的工作都是有服務(wù)器來做的。
3 請求響應(yīng)調(diào)用者和被調(diào)用者之間共享相同的request對象和response對象俺祠,
重定向調(diào)用者和被調(diào)用者屬于兩個獨立訪問請求和響應(yīng)過程公给。
4 重定向跳轉(zhuǎn)后必須加上return借帘,要不然頁面雖然跳轉(zhuǎn)了,
但是還會執(zhí)行跳轉(zhuǎn)后面的語句淌铐,
轉(zhuǎn)發(fā)是執(zhí)行了跳轉(zhuǎn)頁面肺然,下面的代碼就不會在執(zhí)行了。