摘要:的狀態(tài)碼都是重定向,那么,,的重定向都有啥區(qū)別捏,我們先看一下各自的定義請求的資源現(xiàn)在臨時(shí)從不同的響應(yīng)請求。狀態(tài)碼和被添加了進(jìn)來,用以明確服務(wù)器期待客戶端進(jìn)行何種反應(yīng)。
http狀態(tài)碼是web開發(fā)中經(jīng)常會(huì)用到的一個(gè)東西,前幾天無意中看到一個(gè)url返回一個(gè)307的狀態(tài)碼,我一眼看著挺新鮮,就搜刮了一下相關(guān)知識,發(fā)現(xiàn)還挺有用,特此記錄。
3xx的狀態(tài)碼都是重定向,那么307,303,302的重定向都有啥區(qū)別捏,我們先看一下各自的定義
307 Temporary Redirect
請求的資源現(xiàn)在臨時(shí)從不同的URI響應(yīng)請求。由于這樣的重定向是臨時(shí)的,客戶端應(yīng)當(dāng)繼續(xù)向原有地址發(fā)送以后的請求。只有在Cache-Control或Expires中進(jìn)行了指定的情況下,這個(gè)響應(yīng)才是可緩存的。
新的臨時(shí)性的URI應(yīng)當(dāng)在響應(yīng)的Location域中返回。除非這是一個(gè)HEAD請求,否則響應(yīng)的實(shí)體中應(yīng)當(dāng)包含指向新的URI的超鏈接及簡短說明。因?yàn)椴糠譃g覽器不能識別307響應(yīng),因此需要添加上述必要信息以便用戶能夠理解并向新的URI發(fā)出訪問請求。
如果這不是一個(gè)GET或者HEAD請求,那么瀏覽器禁止自動(dòng)進(jìn)行重定向,除非得到用戶的確認(rèn),因?yàn)檎埱蟮臈l件可能因此發(fā)生變化。
303 See Other
對應(yīng)當(dāng)前請求的響應(yīng)可以在另一個(gè)URI上被找到,而且客戶端應(yīng)當(dāng)采用GET的方式訪問那個(gè)資源。這個(gè)方法的存在主要是為了允許由腳本激活的POST請求輸出重定向到一個(gè)新的資源。這個(gè)新的URI不是原始資源的替代引用。同時(shí),303響應(yīng)禁止被緩存。當(dāng)然,第二個(gè)請求(重定向)可能被緩存。
新的URI應(yīng)當(dāng)在響應(yīng)的Location域中返回。除非這是一個(gè)HEAD請求,否則響應(yīng)的實(shí)體中應(yīng)當(dāng)包含指向新的URI的超鏈接及簡短說明。
注意:許多HTTP/1.1版以前的瀏覽器不能正確理解303狀態(tài)。如果需要考慮與這些瀏覽器之間的互動(dòng),302狀態(tài)碼應(yīng)該可以勝任,因?yàn)榇蠖鄶?shù)的瀏覽器處理302響應(yīng)時(shí)的方式恰恰就是上述規(guī)范要求客戶端處理303響應(yīng)時(shí)應(yīng)當(dāng)做的。
302 Found
請求的資源現(xiàn)在臨時(shí)從不同的URI響應(yīng)請求。由于這樣的重定向是臨時(shí)的,客戶端應(yīng)當(dāng)繼續(xù)向原有地址發(fā)送以后的請求。只有在Cache-Control或Expires中進(jìn)行了指定的情況下,這個(gè)響應(yīng)才是可緩存的。
新的臨時(shí)性的URI應(yīng)當(dāng)在響應(yīng)的Location域中返回。除非這是一個(gè)HEAD請求,否則響應(yīng)的實(shí)體中應(yīng)當(dāng)包含指向新的URI的超鏈接及簡短說明。
如果這不是一個(gè)GET或者HEAD請求,那么瀏覽器禁止自動(dòng)進(jìn)行重定向,除非得到用戶的確認(rèn),因?yàn)檎埱蟮臈l件可能因此發(fā)生變化。
注意:雖然RFC 1945和RFC 2068規(guī)范不允許客戶端在重定向時(shí)改變請求的方法,但是很多現(xiàn)存的瀏覽器將302響應(yīng)視作為303響應(yīng),并且使用GET方式訪問在Location中規(guī)定的URI,而無視原先請求的方法。狀態(tài)碼303和307被添加了進(jìn)來,用以明確服務(wù)器期待客戶端進(jìn)行何種反應(yīng)。
咋一看主要區(qū)別如下:
302是http1.0的協(xié)議狀態(tài)碼,在http1.1版本的時(shí)候?yàn)榱思?xì)化302狀態(tài)碼又出來了兩個(gè)303和307,
你可以理解為303就是我們之前的302干的事情,臨時(shí)重定向。
307有點(diǎn)意思:
如果這不是一個(gè)GET或者HEAD請求,那么瀏覽器禁止自動(dòng)進(jìn)行重定向,除非得到用戶的確認(rèn),因?yàn)檎埱蟮臈l件可能因此發(fā)生變化
不是get或head,那比如我們提交一個(gè)post會(huì)怎么樣。我做了個(gè)測試,demo地址點(diǎn)擊這里
我有四個(gè)表單,分別測試303和307的get和post請求,他們都會(huì)重定向到同一個(gè)url(target.php),這個(gè)php會(huì)打印出所有的請求參數(shù)
我把四個(gè)結(jié)果截圖如下
303post截圖如下
303get截圖如下
![
][2]
307post截圖如下
![
][3]
307get截圖如下
![
][4]
結(jié)語
**303重定向不會(huì)自動(dòng)吧get,post的請求帶到目標(biāo)url去。
307重定向會(huì)把post的請求自動(dòng)帶到目標(biāo)url,而對于get請求307也不會(huì)把參數(shù)帶過去**
原文見這里
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/82160.html
摘要:為了可以頂下這個(gè)雷,特意買了高性能網(wǎng)站建設(shè)指南。規(guī)則七避免使用表達(dá)式原因表達(dá)式在你不知道得情況下執(zhí)行多次,嚴(yán)重影響前端性能。這也是會(huì)降低前端性能的。 最近要實(shí)現(xiàn)前端性能探測,可是對于一個(gè)剛?cè)肼殘龅奈襾碚f前端性能是個(gè)啥,我還是個(gè)只追求頁面展示效果的娃兒~。為了可以頂下這個(gè)雷,特意買了高性能網(wǎng)站建設(shè)指南。這本書真的不錯(cuò),強(qiáng)烈推薦看到本文的朋友看一下。 規(guī)則一 減少http請求數(shù) 原因:為什...
摘要:分別具體介紹幾個(gè)常用的狀態(tài)碼二成功的響應(yīng)結(jié)果表明請求被正常處理了。狀態(tài)碼返回時(shí),不包含任何響應(yīng)的主體部分。該狀態(tài)碼表示發(fā)送的請求需要有通過認(rèn)證認(rèn)證認(rèn)證的認(rèn)證信息。該狀態(tài)碼表明服務(wù)器端在執(zhí)行請求時(shí)發(fā)生了錯(cuò)誤。六總結(jié)狀態(tài)碼和狀況的不一致。 返回結(jié)果的 HTTP 狀態(tài)碼 一.簡單介紹: 總述:HTTP 狀態(tài)碼負(fù)責(zé)表示客戶端 HTTP 請求的返回結(jié)果、標(biāo)記服務(wù)器端的處理是否正常、通知出現(xiàn)的錯(cuò)誤...
摘要:分別具體介紹幾個(gè)常用的狀態(tài)碼二成功的響應(yīng)結(jié)果表明請求被正常處理了。狀態(tài)碼返回時(shí),不包含任何響應(yīng)的主體部分。該狀態(tài)碼表示發(fā)送的請求需要有通過認(rèn)證認(rèn)證認(rèn)證的認(rèn)證信息。該狀態(tài)碼表明服務(wù)器端在執(zhí)行請求時(shí)發(fā)生了錯(cuò)誤。六總結(jié)狀態(tài)碼和狀況的不一致。 返回結(jié)果的 HTTP 狀態(tài)碼 一.簡單介紹: 總述:HTTP 狀態(tài)碼負(fù)責(zé)表示客戶端 HTTP 請求的返回結(jié)果、標(biāo)記服務(wù)器端的處理是否正常、通知出現(xiàn)的錯(cuò)誤...
閱讀 3415·2023-04-26 02:41
閱讀 2469·2023-04-26 00:14
閱讀 2884·2021-08-11 10:22
閱讀 1292·2019-12-27 11:38
閱讀 3582·2019-08-29 18:34
閱讀 2389·2019-08-29 12:13
閱讀 2962·2019-08-26 18:26
閱讀 1872·2019-08-26 16:49