圖解HTTP協(xié)議讀書筆記四

圖解HTTP協(xié)議讀書筆記四

HTTP狀態(tài)碼

HTTP狀態(tài)碼負(fù)責(zé)表示客戶端HTTP請求的返回結(jié)果、標(biāo)記服務(wù)器端的處理是否正常、通知出現(xiàn)的錯誤等工作。

以下內(nèi)容將以HTTP狀態(tài)碼為主要內(nèi)容



狀態(tài)碼告知從服務(wù)器端返回的請求結(jié)果

狀態(tài)碼的職責(zé)是當(dāng)客戶端向服務(wù)端發(fā)送請求時,描述返回的請求結(jié)果。

借助狀態(tài)碼,用戶可以知道服務(wù)器端是正常處理了請求,還是出現(xiàn)了錯誤。

狀態(tài)碼的類別:


只要遵守狀態(tài)碼類別的定義,即使改變RFC2616中定義的狀態(tài)碼,或服務(wù)器端自行創(chuàng)建狀態(tài)碼都沒問題。

狀態(tài)碼僅記錄在RFC2616上的HTTP狀態(tài)碼就達(dá)40種,若再加上WEBDAV(基于萬維網(wǎng)的分布式創(chuàng)作和版本控制)(RFC4918、5842)和附加HTTP狀態(tài)碼(RFC6585)等擴展,數(shù)量就達(dá)60余種。

別看種類繁多,實際上經(jīng)常使用的大概只有14種。

接下來,來了解這些具有代表性的14個狀態(tài)碼。

一.2XX成功

?2XX的響應(yīng)結(jié)果表明請求被正常處理了。

1.1 200 OK?

表示從客戶端發(fā)來的請求在服務(wù)器端被正常處理了。

在響應(yīng)報文內(nèi)、隨狀態(tài)碼一起返回的信息會因方法的不同而發(fā)生改變。

比如,使用GET方法時,對應(yīng)請求資源的實體會作為響應(yīng)返回。

1.2 204 No Content

該狀態(tài)碼代表服務(wù)器接收的請求已成功處理,但在返回的響應(yīng)報文中不含實體的主體部分。

另外,也不允許返回任何實體的主體。

比如,當(dāng)從瀏覽器發(fā)出請求處理后,返回204響應(yīng),那么瀏覽器顯示的頁面不發(fā)生更新。

一般在只需要從客戶端往服務(wù)器發(fā)送信息,而對客戶端不需要發(fā)送新信息內(nèi)容的情況下使用。

1.3 206 Partial Content

該狀態(tài)碼表示客戶端進行了范圍請求,而服務(wù)器成功執(zhí)行了這部分的GET請求。

相應(yīng)報文包含由Content - Range 指定范圍的實體內(nèi)容。



二.3XX重定向

3XX響應(yīng)結(jié)果表明瀏覽器需要執(zhí)行某些特殊的處理以正確處理請求。

2.1 301 Moved Permanently

永久性重定向。

該狀態(tài)碼表示請求的資源已被分配了新的URI,以后使用資源現(xiàn)在所指的URI。

也就是說,如果已經(jīng)把資源對應(yīng)的URI保存為書簽了,這時應(yīng)該按Location首部字段提示的URI重新保存。

像下方給出的請求URI,當(dāng)指定資源路徑的最后忘記添加斜杠“/”就會產(chǎn)生301狀態(tài)碼。

http://xxx.com/xxx 只是示例不要點擊或跳轉(zhuǎn)到該鏈接!

2.2 302 Found?

臨時性重定向。

該狀態(tài)碼表示請求的資源已被分配了新的URI,希望用戶(本次請求)能使用新的URI訪問。

和301 Moved Permanently狀態(tài)碼相似,但302狀態(tài)碼代表的資源不是被永久移動,只是臨時性質(zhì)的。

換句話說、已移動的資源對應(yīng)的URI將來還有可能發(fā)生改變。

比如,用戶URI保存成書簽,但不會像301狀態(tài)碼出現(xiàn)時那樣去更新書簽,而是依舊保留返回302狀態(tài)碼的頁面對應(yīng)的URI。

2.3 303 See Other

該狀態(tài)碼表示由于請求對應(yīng)的資源存在著另一個URI,應(yīng)使用GET方法定向獲取請求的資源。

303狀態(tài)碼和302 Found狀態(tài)碼有著相同的功能,但303狀態(tài)碼明確表示客戶端應(yīng)當(dāng)采用GET方法獲取資源,這點與302狀態(tài)碼有區(qū)別。

?比如,當(dāng)使用POST方法訪問CGI程序,其執(zhí)行后的處理結(jié)果是希望客戶端能以GET方法重定向到另一個URI上去時,返回303狀態(tài)碼是最理想的。

注:當(dāng)301、302、303響應(yīng)狀態(tài)碼返回時,幾乎所有的瀏覽器都會把POST改成GET,并刪除請求報文內(nèi)的主體,之后請求會自定再次發(fā)送。

301,302標(biāo)準(zhǔn)是禁止將POST方法改變成GET方法的,但實際使用時大家都會這么做。

2.4 304 Not Modified

該狀態(tài)碼表示客戶端發(fā)送附帶條件的請求時,服務(wù)器端允許請求訪問資源,但未滿足條件的情況

304狀態(tài)碼返回時,不包含任何響應(yīng)的主體部分。304雖然被劃分在3XX類型中,但是和重定向沒有關(guān)系。

2.5 307 Temporary Redirect

臨時重定向。該狀態(tài)碼與302Found 有著相同的含義。

盡管302標(biāo)準(zhǔn)禁止POST變換成GET,但實際使用時大家并不遵守。

307會遵照瀏覽器標(biāo)準(zhǔn),不會從POST變成GET。

但是,對于處理響應(yīng)時的行為,每種瀏覽器有可能出現(xiàn)不同的情況。(!!瀏覽器的兼容性!!)



三.4XX客戶端錯誤

4XX的響應(yīng)結(jié)果表明客戶端是發(fā)生錯誤的原因所在。

3.1 400 Bad Request

該狀態(tài)碼表示請求報文中存在語法錯誤。

當(dāng)錯誤發(fā)生時,需修改請求的內(nèi)容后再次發(fā)送請求。

另外,瀏覽器會像200OK 一樣對待該狀態(tài)碼。

3.2 401 Unauthorized

該狀態(tài)碼表示發(fā)送的請求需要有通過HTTP認(rèn)證(BASIS認(rèn)證、DIGEST認(rèn)證)的認(rèn)證信息。

另外若之前已進行一次請求,則表示用戶認(rèn)證失敗。

返回含有401的響應(yīng)必須包含一個適用于被請求資源的WWW-Authenticate 首部用以質(zhì)詢(challenge)用戶信息。

當(dāng)瀏覽器初次接收到401響應(yīng),會彈出認(rèn)證用的對話窗口。

3.3 403 Forbidden

該狀態(tài)碼表明對請求資源的訪問被瀏覽器拒絕了。

服務(wù)器端沒有必要給出拒絕的詳細(xì)理由,但如果想作說明的話,

可以在實體的主體部分對原因進行描述,這樣就能讓用戶看到了。

3.4 404 Not Found

該狀態(tài)碼表明服務(wù)器上無法找到請求的資源。除此之外,也可以在服務(wù)器端拒絕請求且不想說明理由時使用。



四.5XX服務(wù)器錯誤

5XX的響應(yīng)結(jié)果表明服務(wù)器本身發(fā)生錯誤。

4.1 500 Internal Server Error

該狀態(tài)碼表明服務(wù)器端再執(zhí)行請求時發(fā)生了錯誤。也有可能是WEB應(yīng)用存在的BUG或某些臨時的故障。

4.2 503 Service Unavailable

該狀態(tài)碼表明服務(wù)器暫時處于超負(fù)載或正在進行停機維護,現(xiàn)在無法處理請求。

如果事先得知解除以上狀況需要的時間,最好寫入Retry-After首部字段再返回給客戶端.

注: 狀態(tài)碼和狀況的不一致

不少返回的狀態(tài)碼響應(yīng)都是錯誤的,但是用戶可能察覺不到這點。

比如WEB應(yīng)用程序內(nèi)部發(fā)生錯誤,狀態(tài)碼依然返回200OK,這種情況也經(jīng)常遇到。

原文地址

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,488評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,034評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,327評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,554評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,337評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,883評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,975評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,114評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,625評論 1 332
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,555評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,737評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,244評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 43,973評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,615評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,343評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,699評論 2 370

推薦閱讀更多精彩內(nèi)容

  • 1. 網(wǎng)絡(luò)基礎(chǔ)TCP/IP HTTP基于TCP/IP協(xié)議族,HTTP屬于它內(nèi)部的一個子集。 把互聯(lián)網(wǎng)相關(guān)聯(lián)的協(xié)議集...
    yozosann閱讀 3,454評論 0 20
  • 本文是《圖解HTTP》讀書筆記的第一篇,主要包括此書的前五章內(nèi)容,簡要記錄一下。大概分為以下幾部分: TCP/IP...
    lijiankun24閱讀 1,318評論 0 2
  • 網(wǎng)絡(luò)基礎(chǔ)知識 URL和URI URI(Uniform Resource Idenifier)統(tǒng)一資源標(biāo)識符。即由某...
    d9fc24a0c9a9閱讀 1,137評論 0 6
  • API定義規(guī)范 本規(guī)范設(shè)計基于如下使用場景: 請求頻率不是非常高:如果產(chǎn)品的使用周期內(nèi)請求頻率非常高,建議使用雙通...
    有涯逐無涯閱讀 2,571評論 0 6
  • 每日必讀:7條人生守則(采用對標(biāo)的方法) 1.早睡早起--晚10早5。是學(xué)習(xí)成長的根基保障,午休5-15min.2...
    員子圓夢閱讀 246評論 3 1