網(wǎng)絡(luò)11——重定向(13/100)
時(shí)間:2023-02-09 01:03:01 | 來(lái)源:建站知識(shí)
時(shí)間:2023-02-09 01:03:01 來(lái)源:建站知識(shí)
1、重定向的過(guò)程
重定向?qū)儆诒粍?dòng)跳轉(zhuǎn),301 是“永久重定向”,302 是“臨時(shí)重定向”,瀏覽器收到這兩個(gè)狀態(tài)碼就會(huì)跳轉(zhuǎn)到新的 URI。
1.1 響應(yīng)字段
“Location”字段屬于響應(yīng)字段,必須出現(xiàn)在響應(yīng)報(bào)文里。但只有配合 301/302 狀態(tài)碼才有意義,它標(biāo)記了服務(wù)器要求重定向的 URI。
1.2 過(guò)程
一次重定向發(fā)送了兩次HTTP請(qǐng)求,第一個(gè)就是返回了3xx的請(qǐng)求,第二個(gè)請(qǐng)求重定向到了Location后的URI。但是用戶無(wú)法感知兩次請(qǐng)求。
比如:
響應(yīng)頭中出現(xiàn)了:Location: /index.html
瀏覽器就會(huì)根據(jù)第二次請(qǐng)求重定向到到index.html
2、重定向的狀態(tài)碼
2.1 301 永久重定向
原 URI 已經(jīng)“永久”性地不存在了,今后的所有請(qǐng)求都必須改用新的 URI。當(dāng)瀏覽器收到301時(shí),會(huì)做一些處理,比如更新歷史記錄,下次訪問(wèn)直接訪問(wèn)新的URI。
2.2 302 臨時(shí)重定向
原來(lái)的 URI 仍然有效,但暫時(shí)不可用,所以只會(huì)執(zhí)行簡(jiǎn)單的跳轉(zhuǎn)頁(yè)面,不記錄新的 URI,下次還是訪問(wèn)之前的URI。
3、重定向的應(yīng)用
3.1 資源不可用
資源不可用時(shí)候,需要用另一個(gè)新的URI代替。避免訪問(wèn)時(shí)候出現(xiàn)404,所以需要重定向到新的URI,繼續(xù)提供服務(wù)。
3.2 避免重復(fù)
多個(gè)網(wǎng)址跳轉(zhuǎn)到一個(gè)URI,有一些網(wǎng)站會(huì)申請(qǐng)多個(gè)相似域名,這些域名都會(huì)重定向到主站,不需要為其他域名再提供服務(wù)。
3.3 域名、服務(wù)器、網(wǎng)站發(fā)生大幅改變
改變后,導(dǎo)致使用了新的域名,這時(shí)就需要使用 301 永久重定向。
3.4 系統(tǒng)維護(hù)
維護(hù)過(guò)程中,為了通知用戶,會(huì)重定向到一個(gè)通知頁(yè)面,等到維護(hù)結(jié)束,還會(huì)繼續(xù)恢復(fù)業(yè)務(wù)。
服務(wù)降級(jí)也是用了臨時(shí)重定向。
4、重定向的問(wèn)題
性能損耗,兩次跳轉(zhuǎn),雖然重定向的響應(yīng)報(bào)文很小,但是大量重定向也會(huì)造成性能損耗。
循環(huán)跳轉(zhuǎn),一般是因?yàn)橹囟ㄏ虿呗栽O(shè)置有問(wèn)題,瀏覽器要能檢測(cè)到循環(huán)跳轉(zhuǎn)問(wèn)題,發(fā)現(xiàn)了及時(shí)停止請(qǐng)求,給出錯(cuò)誤提示。