http詳解

1.請求報文(用於 HTTP 協議交互的信息被稱爲 HTTP 報文,HTTP 報文大致可分爲報文首部和報文主體兩塊)

   這段請求內容的意思是:請求訪問某臺 HTTP 服務器上的 /index.htm 頁面資源。
   請求報文是由請求方法、請求 URI、協議版本、可選的請求首部字段和內容實體構成的。

2.響應報文


      響應報文基本上由協議版本、狀態碼(表示請求成功或失敗的數字代碼)、用以解釋狀態碼的原因短語、可選的響應首部字段以及實體主體構成。

     狀態碼的職責是當客戶端向服務器端發送請求時,描述返回的請求結果。藉助狀態碼,用戶可以知道服務器端是正常處理了請求,還是出現了錯誤。

  • 1xx:指示信息--表示請求已接收,繼續處理。
  • 2xx:成功--表示請求已被成功接收、理解、接受。
  • 3xx:重定向--要完成請求必須進行更進一步的操作。
  • 4xx:客戶端錯誤--請求有語法錯誤或請求無法實現。
  • 5xx:服務器端錯誤--服務器未能實現合法的請求。

     常見的狀態碼:

  200 OK   

204 No Content(代表服務器接收的請求已成功處理,但在返回的響應報文中不含實體的主體部分)      

206 Partial Content(表示客戶端進行了範圍請求)   

301 Moved Permanently(表示請求的資源已被分配了新的 URI,以後應使用資源現在所指的 URI)

302 Found(臨時性重定向。該狀態碼錶示請求的資源已被分配了新的 URI,希望用戶(本次)能使用新的 URI 訪問)

303 See Other(表示由於請求對應的資源存在着另一個 URI,應使用 GET 方法定向獲取請求的資源)

         304 Not Modified(表示客戶端發送附帶條件的請求時,服務器端允許請求訪問資源,但未滿足條件的情況)

400 Bad Request(表示請求報文中存在語法錯誤,但瀏覽器會像 200 OK 一樣對待該狀態碼)

401 Unauthorized(表示發送的請求需要有通過 HTTP 認證(BASIC 認證、DIGEST 認證)的認證信息)

403 Forbidden(表明對請求資源的訪問被服務器拒絕了)

404 Not Found(表明服務器上無法找到請求的資源)

500 Internal Server Error(表明服務器端在執行請求時發生了錯誤)

503 Service Unavailable(表明服務器暫時處於超負載或正在進行停機維護,現在無法處理請求)


3.http是不保存狀態的協議和cookie狀態管理

    使用 HTTP 協議,每當有新的請求發送時,就會有對應的新響應產生。協議本身並不保留之前一切的請求或響應報文的信息。這是爲了更快地處理大量事務,確保協議的可  伸縮性,而特意把 HTTP 協議設計成如此簡單的。

   HTTP 雖然是無狀態協議,但爲了實現期望的保持狀態功能,於是引入了 Cookie 技術。有了 Cookie 再用 HTTP 協議通信,就可以管理狀態了。

   Cookie 技術通過在請求和響應報文中寫入 Cookie 信息來控制客戶端的狀態

   Cookie 會根據從服務器端發送的響應報文內的一個叫做 Set-Cookie 的首部字段信息,通知客戶端保存 Cookie。當下次客戶端再往該服務器發送請求時,客戶端會自動在請求報文中加入 Cookie 值後發送出去。

  HTTP 請求報文和響應報文的內容如下。
 
     (1)請求報文(沒有 Cookie 信息的狀態)
         GET /reader/ HTTP/1.1
         Host: hackr.jp
         *首部字段內沒有Cookie的相關信息
     (2)響應報文(服務器端生成 Cookie 信息)
         HTTP/1.1 200 OK
        Date: Thu, 12 Jul 2012 07:12:20 GMT
        Server: Apache
       <Set-Cookie: sid=1342077140226724; path=/; expires=Wed,10-Oct-12 07:12:20 GMT>
       Content-Type: text/plain; charset=UTF-8
     (3)請求報文(自動發送保存着的 Cookie 信息)
         GET /image/ HTTP/1.1
         Host: hackr.jp
        Cookie: sid=1342077140226724
    

4.HTTP 中可使用的方法

  GET :獲取資源(GET 方法用來請求訪問已被 URI 識別的資源)

  POST:傳輸實體主體

  PUT:傳輸文件

  HEAD:獲得報文首部(HEAD 方法和 GET 方法一樣,只是不返回報文主體部分。用於確認 URI 的有效性及資源更新的日期時間等)

  DELETE:刪除文件(與 PUT 相反的方法,DELETE 方法本身和 PUT 方法一樣不帶驗證機制,所以一般的 Web 網站也不使用 DELETE 方法)

  OPTIONS:詢問支持的方法


5.當請求一個包含 10 張圖片的 HTML Web 頁面,與挨個連接相比,用持久連接可以讓請求更快結束。而管線化技術則比持久連接還要快。請求數越多,時間差就越明顯。

6.http首部

  (1)通用首部字段

Cache-Control 控制緩存的行爲 
  Connection 逐跳首部、連接的管理 
  Date 創建報文的日期時間 
 Pragma 報文指令 
  Trailer 報文末端的首部一覽 
  Transfer-Encoding 指定報文主體的傳輸編碼方式 
 Upgrade 升級爲其他協議 
  Via 代理服務器的相關信息 
  Warning 錯誤通知

  (2)請求首部字段

Accept 用戶代理可處理的媒體類型 
 Accept-Charset 優先的字符集 
 Accept-Encoding 優先的內容編碼 
  Accept-Language 優先的語言(自然語言) 
 Authorization Web認證信息 
 Expect 期待服務器的特定行爲 
 From 用戶的電子郵箱地址 
  Host 請求資源所在服務器 
 If-Match 比較實體標記(ETag)

If-Modified-Since 比較資源的更新時間 
  If-None-Match 比較實體標記(與 If-Match 相反) 
  If-Range 資源未更新時發送實體 Byte 的範圍請求 
 If-Unmodified-Since 比較資源的更新時間(與If-Modified-Since相反) 
 Max-Forwards 最大傳輸逐跳數 
  Proxy-Authorization 代理服務器要求客戶端的認證信息 
  Range 實體的字節範圍請求 
  Referer 對請求中 URI 的原始獲取方 
  TE 傳輸編碼的優先級 
  User-Agent HTTP 客戶端程序的信息

  (3)響應首部字段

首部字段名 說明 
  Accept-Ranges 是否接受字節範圍請求 
 Age 推算資源創建經過時間 
 ETag 資源的匹配信息 
 Location 令客戶端重定向至指定URI 
 Proxy-Authenticate 代理服務器對客戶端的認證信息 
  Retry-After 對再次發起請求的時機要求 
  Server HTTP服務器的安裝信息 
  Vary 代理服務器緩存的管理信息 
  WWW-Authenticate 服務器對客戶端的認證信息

  (4)實體首部字段

Allow 資源可支持的HTTP方法 
 Content-Encoding 實體主體適用的編碼方式 
 Content-Language 實體主體的自然語言 
  Content-Length 實體主體的大小(單位:字節) 
 Content-Location 替代對應資源的URI 
 Content-MD5 實體主體的報文摘要 
 Content-Range 實體主體的位置範圍 
  Content-Type 實體主體的媒體類型 
 Expires 實體主體過期的日期時間 
  Last-Modified 資源的最後修改日期時間

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章