前端的小伙伴們大家好闪盔,相信很多小伙伴們面試的時候都被問過httpcode 301和302的區(qū)別。好多小伙伴們不加思索就答:301是永久重定向铺罢,302是臨時重定向朝刊。然后你要是這么回答,面試官就會在心里默默地扣掉1分半等。繼續(xù)問你:還有其他區(qū)別嗎揍愁?下面小編就為大家詳細(xì)的說一下這兩者的區(qū)別。
1. 定義
301:被請求的資源已永久移動到新位置杀饵,并且將來任何對此資源的引用都應(yīng)該使用本響應(yīng)返回的若干個 URI 之一莽囤。如果可能,擁有鏈接編輯功能的客戶端應(yīng)當(dāng)自動把請求的地址修改為從服務(wù)器反饋回來的地址切距。除非額外指定朽缎,否則這個響應(yīng)也是可緩存的。
302:請求的資源現(xiàn)在臨時從不同的 URI 響應(yīng)請求谜悟。由于這樣的重定向是臨時的话肖,客戶端應(yīng)當(dāng)繼續(xù)向原有地址發(fā)送以后的請求。只有在Cache-Control或Expires中進(jìn)行了指定的情況下葡幸,這個響應(yīng)才是可緩存的最筒。
兩者都是一個POST請求經(jīng)過 301/302 后會被瀏覽器轉(zhuǎn)為GET請求
2. 緩存
定義上已經(jīng)給出,對于301請求蔚叨,瀏覽器是默認(rèn)給一個很長的緩存床蜘。而302是不緩存的辙培。
3. 搜索引擎
301:?舊地址A的資源不可訪問了(永久移除), 重定向到網(wǎng)址B,搜索引擎會抓取網(wǎng)址B的內(nèi)容邢锯,同時將網(wǎng)址保存為B網(wǎng)址虏冻。
302:?舊地址A的資源仍可訪問,這個重定向只是臨時從舊地址A跳轉(zhuǎn)到B地址弹囚,這時搜索引擎會抓取B網(wǎng)址內(nèi)容,但是會將網(wǎng)址保存為A的领曼。
4. 安全
盡量使用301跳轉(zhuǎn)鸥鹉,以防止網(wǎng)址劫持!
假如庶骄,A -> B毁渗。大部分的搜索引擎在大部分情況下,當(dāng)收到302 重定向時单刁,有的時候搜索引擎灸异,尤其是Google,并不能總是抓取目標(biāo)網(wǎng)址羔飞。比如說肺樟,有的時候A 網(wǎng)址很短,但是它做了一個302 重定向到B 網(wǎng)址逻淌,而B 網(wǎng)址是一個很長的亂七八糟的URL 網(wǎng)址么伯,甚至還有可能包含一些問號之類的參數(shù)。很自然的卡儒,A 網(wǎng)址更加用戶友好田柔,而B 網(wǎng)址既難看,又不用戶友好骨望。這時Google 很有可能會仍然顯示網(wǎng)址A硬爆。由于搜索引擎排名算法只是程序而不是人,在遇到302 重定向的時候擎鸠,并不能像人一樣的去準(zhǔn)確判定哪一個網(wǎng)址更適當(dāng)缀磕,這就造成了網(wǎng)址URL?劫持的可能性。也就是說劣光,一個不道德的人在他自己的網(wǎng)址A 做一個302 重定向到你的網(wǎng)址B虐骑,出于某種原因, Google 搜索結(jié)果所顯示的仍然是網(wǎng)址A赎线,但是所用的網(wǎng)頁內(nèi)容卻是你的網(wǎng)址B 上的內(nèi)容廷没,這種情況就叫做網(wǎng)址URL 劫持。你辛辛苦苦所寫的內(nèi)容就這樣被別人偷走了垂寥。302 重定向所造成的網(wǎng)址URL 劫持現(xiàn)象颠黎,已經(jīng)存在一段時間了另锋。不過到目前為止,似乎也沒有什么更好的解決方法狭归。在正在進(jìn)行的谷歌大爸爸?jǐn)?shù)據(jù)中心轉(zhuǎn)換中夭坪,302 重定向問題也是要被解決的目標(biāo)之一。從一些搜索結(jié)果來看过椎,網(wǎng)址劫持現(xiàn)象有所改善室梅,但是并沒有完全解決。
簡單來說就是:有個壞人把他的電話來電轉(zhuǎn)移到了一個明星那疚宇,讓大家都以為他的電話是那個明星的亡鼠。他的手機(jī)號成名后,就可以拉個微信群敷待,大膽的假裝明星间涵,實(shí)現(xiàn)他的微商夢,從此走上人生巔峰榜揖。