淺談Http協議(1)

http://www.2cto.com/net/201604/501935.html
一、Http請求報文:
請求報文介紹一個HTTP請求報文由請求行(requestline)、請求頭部(header)、空行和請求體4個部分組成,圖-1給出了請求報文的一般格式。

\

圖-1: http請求報文的一般格式

1、請求行
請求行由請求方法字段、URL字段和HTTP協議版本字段3個字段組成,它們用空格分隔。它的一般格式如
下:
一般格式:Method Request-URI HTTP-Version CRLF
具體請求的格式:POST http://192.168.2.217:8080/index.jsp HTTP/1.1

 

(1)Method
Method表示請求方法,請求方法(所有方法全爲大寫)有多種,各個方法的解釋如下:
GET 請求獲取Request-URI所標識的資源
POST 在Request-URI所標識的資源後附加新的數據
HEAD 請求獲取由Request-URI所標識的資源的響應消息報頭
PUT 請求服務器存儲一個資源,並用Request-URI作爲其標識
DELETE 請求服務器刪除Request-URI所標識的資源
TRACE 請求服務器回送收到的請求信息,主要用於測試或診斷
CONNECT 保留將來使用
OPTIONS 請求查詢服務器的性能,或者查詢與資源相關的選項和需求
 
(2)Request-URI是一個統一資源標識符
這個字段爲請求對應的URL地址,它和報文頭的Host屬性組成完整的請求URL。
 
(3)HTTP-Version
 
這個字段表示請求的HTTP協議版本,目前常用的是HTTP的1.1版本。
 
特別注意:CRLF表示回車和換行(除了作爲結尾的CRLF外,不允許出現單獨的CR或LF字符)。
 
2、請求頭
請求頭包含許多有關的客戶端環境和請求正文的有用信息。例如,請求頭可以聲明瀏覽器所用的語言,請求正文的長度等。
Accept:image/gif.image/jpeg.*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)
Accept-Encoding:gzip,deflate.
 
(1)Accept屬性
這表明客戶端瀏覽器支持的MIME數據類型,比如案例中客戶端支持jif圖片和jpg圖片,且優先順序
爲:jif--->jpg
 
(2)
Accept-Language屬性
客戶端支持的語言:
zh-cn表示中文簡體
 
(3)
Connection屬性
該屬性表示客戶端與服務連接類型。
Keep-Alive:表示持久連接(長
連接
(4)
Host屬性:域名
(5)
User-Agent屬性:客戶端代理(在PC端一般是瀏覽器類型)
(6)
Accept-Encoding屬性
表示瀏覽器有能力解碼的編碼類型;

gzip是 GNU zip 的縮寫,它是一個 GNU 自由軟件的文件壓縮程序,也經常用來表示 gzip 這種

文件格式。

   deflate是同時使用了 LZ77 算法與哈夫曼編碼(Huffman Coding)的一個無損數據壓縮算法。

 
 
3、空行
最後一個請求頭之後是一個空行,發送回車符和換行符,通知服務器以下不再有請求頭。
 
4、請求實體(Request Body:請求正文或請求實體
請求數據不在GET方法中使用,而是在POST方法中使用。POST方法適用於需要客戶填寫表單的場合。與請求數據相關的最常使用的請求頭是Content-Type和Content-Length。

 

具體應用:

\

圖-2:請求報文

 

二、HTTP響應報文
HTTP 響應報文由狀態行、響應頭部、空行 和 響應包體 4 個部分組成,如圖-3所示:
\

 

圖-3: http響應報文的一般格式

 

下面對響應報文格式進行簡單的分析:
 
1、狀態行
狀態行由3部分組成,分別爲:協議版本,狀態碼,狀態碼描述,之間由空格分隔,一般格式如下:
(1)協議版本
協議版本指的是服務器端與客戶端的HTTP通信協議,目前一般採用HTTP/1.1版本。
(2)狀態碼
①五大類常用狀態碼:

1xx:表示服務器已接收了客戶端請求,客戶端可繼續發送請求;

   2xx:表示服務器已成功接收到請求並進行處理;

   3xx:表示服務器要求客戶端重定向;

   4xx:表示客戶端的請求有非法內容;

   5xx:表示服務器未能正常處理客戶端的請求而出現意外錯誤;

 

②常用的一些具體的狀態碼:

100——客戶必須繼續發出請求
101——客戶要求服務器根據請求轉換HTTP協議版本
 
2**:操作成功收到,分析、接受
200——交易成功
201——提示知道新文件的URL
202——接受和處理、但處理未完成
203——返回信息不確定或不完整
204——請求收到,但返回信息爲空
205——服務器完成了請求,用戶代理必須復位當前已經瀏覽過的文件
206——服務器已經完成了部分用戶的GET請求
 
3**:完成此請求必須進一步處理
300——請求的資源可在多處得到
301——刪除請求數據
302——在其他地址發現了請求數據
303——建議客戶訪問其他URL或訪問方式
304——客戶端已經執行了GET,但文件未變化
305——請求的資源必須從服務器指定的地址得到
306——前一版本HTTP中使用的代碼,現行版本中不再使用
307——申明請求的資源臨時性刪除
 
4**:請求包含一個錯誤語法或不能完成
400——錯誤請求,如語法錯誤
401——未授權
HTTP 401.1 -未授權:登錄失敗
HTTP 401.2 -未授權:服務器配置問題導致登錄失敗
HTTP 401.3 - ACL禁止訪問資源
HTTP 401.4 -未授權:授權被篩選器拒絕
HTTP 401.5 -未授權:ISAPI或CGI授權失敗
402——保留有效ChargeTo頭響應
403——禁止訪問
HTTP 403.1禁止訪問:禁止可執行訪問
HTTP 403.2 -禁止訪問:禁止讀訪問
HTTP 403.3 -禁止訪問:禁止寫訪問
HTTP 403.4 -禁止訪問:要求SSL
HTTP 403.5 -禁止訪問:要求SSL 128
HTTP 403.6 -禁止訪問:IP地址被拒絕
HTTP 403.7 -禁止訪問:要求客戶證書
HTTP 403.8 -禁止訪問:禁止站點訪問
HTTP 403.9 -禁止訪問:連接的用戶過多
HTTP 403.10 -禁止訪問:配置無效
HTTP 403.11 -禁止訪問:密碼更改
HTTP 403.12 -禁止訪問:映射器拒絕訪問
HTTP 403.13 -禁止訪問:客戶證書已被吊銷
HTTP 403.15 -禁止訪問:客戶訪問許可過多
HTTP 403.16 -禁止訪問:客戶證書不可信或者無效
HTTP 403.17 -禁止訪問:客戶證書已經到期或者尚未生效
404——沒有發現文件、查詢或URl
405——用戶在Request-Line字段定義的方法不允許
406——根據用戶發送的Accept拖,請求資源不可訪問
407——類似401,用戶必須首先在代理服務器上得到授權
408——客戶端沒有在用戶指定的餓時間內完成請求
409——對當前資源狀態,請求不能完成
410——服務器上不再有此資源且無進一步的參考地址
411——服務器拒絕用戶定義的Content-Length屬性請求
412——一個或多個請求頭字段在當前請求中錯誤
413——請求的資源大於服務器允許的大小
414——請求的資源URL長於服務器允許的長度
415——請求資源不支持請求項目格式
416——請求中包含Range請求頭字段,在當前請求資源範圍內沒有range指示值,請求也不包含If-Range請求頭字段
417——服務器不滿足請求Expect頭字段指定的期望值,如果是代理服務器,可能是下一級服務器不能滿足請求長。
 
5**:服務器執行一個完全有效請求失敗
HTTP 500 -內部服務器錯誤
HTTP 500.100 -內部服務器錯誤- ASP錯誤
HTTP 500-11服務器關閉
HTTP 500-12應用程序重新啓動
HTTP 500-13 -服務器太忙
HTTP 500-14 -應用程序無效
HTTP 500-15 -不允許請求global.asa
Error 501 -未實現

HTTP 502 -網關錯誤

 

(3)狀態碼描述
上述的每個狀態碼後面都跟一個描述信息:就是對狀態碼的詳細描述。
 
2、響應頭部(圖中首部行)
響應頭(Response Header)響應頭也和請求頭一樣包含許多有用的信息,例如服務器類型、日期時
間、內容類型和長度等:
 
3、空行
最後一個響應頭部之後是一個空行,發送回車符和換行符,通知服務器以下不再有響應頭部。
 
4、響應實體
服務器返回給客戶端的請求結果信息;
 
 
具體應用:(圖-2請求的響應結果)
\

圖-4 響應報文

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