1. 程式人生 > >HTTP協議 -- 認清協議常用狀態碼

HTTP協議 -- 認清協議常用狀態碼

http://www.cnblogs.com/roverliang/p/5209414.html

基本的書籍已經介紹到這裡了,下面來簡單介紹下HTTP的狀態碼。

在介紹狀態碼之前,要簡單講一下為什麼要有狀態碼這個東西。計算機之間的通訊以協議為共同基礎,客戶端和服務端都按照協議的約定進行通訊。HTTP的狀態碼就在HTTP的協議內,規定了很多的狀態。客戶端請求服務端後,服務端就返回結果,同時返回狀態碼。告訴客戶端,本次請求是成功了還是失敗了,還是要客戶端做什麼操作。那為什麼不使用文字狀態碼呢?不是更加清晰直觀嗎?這是因為這些狀態協議裡面已經規定了,提到狀態碼,就是表示本條狀態。想到一個小笑話,有助於理解這個狀態碼:

在某個外星球家庭,人們講笑話通常不講出笑話的內容,而是直接說編號,一個編號就代表一個笑話。有一天從地球來了一個年輕的帥小夥,愛上了這個家的女孩,就到他家裡去做客。吃完飯,這個星球流行講笑話消食,跟地球飯後喝茶是一個道理的。

外祖父說:404;

所有的人都捧腹大笑。

外祖母說:200;

大家都忍俊不禁。

他女朋友說:502;

大家更是笑的流出了眼淚。

等輪到了他,他恍然不知所措,於是胡亂編了一個數字,那就500吧。所有的人都笑的前仰後合不能自己。

他完全搞不懂了,問大家,為什麼好笑。女朋友講:我們星球上只有一本笑話書,大家都背的很熟,所以提到某個編號,就代表一個笑話,我們都知道。但是我們的笑話裡,沒有500這個號碼呀。

說的就是這個道理,所以用狀態碼錶示。

常用的狀態碼不多,約有14種。

1** 類狀態碼稱之為Information 狀態嗎,表示資訊正在處理。

2** 類狀態碼稱為為Success狀態碼,表示請求正常完成。

3**類狀態碼稱之為Redirection 狀態碼,表示需要客戶端進行附加操作(如跳轉。重定向)

4**類狀態碼稱之為Error狀態碼,通常是由於客戶端的錯誤導致的。

5**類狀態嗎稱為Server Error狀態碼,通常是服務端的錯誤導致的。

小結下:狀態碼分為客戶端錯誤狀態碼、服務端錯誤狀態碼、成功狀態碼,重定向狀態碼等。

一 、 2** 型別狀態碼

1、200  ok  表示從客戶端傳送的請求被服務端正確的處理並且已經發回了請求。

2、204  No Content 請求已經成功了,但是卻沒有返回任何結果(實體)。通常使用php die() exit()函式會引發204狀態碼。

3、206  Partial Content 範圍請求狀態碼。

    範圍請求是個什麼東西。看下圖就知道了.

    

    上圖的美女圖的一些部分沒有載入完成,實際上網際網路載入圖片就是用的範圍請求。一個圖片可能有1024k,一次載入的話,頁面的渲染速度就會非常緩慢,體現會比較差。執行非同步的範圍請求之後,每次載入256k的圖片,然後依次渲染出來拼接出來,載入速度就會明顯快很多。

    上面的206 值得就是http請求執行了範圍請求,只獲取了一部分資源。

二、3**狀態碼

  1、301 狀態碼 Moved Permanently  表示你請求的頁面資源現在已經轉移位置了,你需要到新的地方去需找該頁面。這個即重定向,伺服器的response首部裡會有location欄位值來提示。

   2、302 狀態碼(Found)和301差不過。表示你請求的頁面資源現在已經轉移位置了,你要到新的地方去尋找。但是新的地方也不是固定的,說不定過幾天還要換。不提示使用者儲存書籤,提示使用者跳轉。

   3、303 狀態碼。See other .表示你請求的頁面中包含著你想要拿到資源的地址。比如你到門衛處去取快遞,到了門衛處,大爺說快遞已經交給前臺了。這個過程會返回303狀態碼。

   4、304 Not Modified 表示資源已經找到了,但是和上次相比沒有更新。瀏覽器讀取快取。

   5、307 Temporary Redirect 臨時重定向。

三:4** 客戶端錯誤。

   1、400 Bad Request 報文語法錯誤。

   2、401 Unauthorized 需要通過HTTP認證(BASIC 或者DIGEST).

   3、403 Forbidden 目錄、檔案許可權錯誤都會報此狀態碼。

   4、404 伺服器上無此資源,一般情況為路徑錯誤。

四:5** 服務端錯誤。

   1、500 Internal Server Error   服務端錯誤,有可能是WEB應用存在錯誤。

    2、503 Serveice Unavailable   伺服器超負荷執行。

這些東西,沒必要死記硬背。使用的時候去查下文件就好了。這也是我寫此篇部落格的原因:留此存證,以備不時之需。