網絡知識--1.HTTP報文結構

一.HTTP請求報文結構

一個HTTP請求報文由四個部分組成:請求行\r\n、請求頭部\r\n、空行\r\n、請求數據

1.請求行

     請求行由請求方法字段、URL字段和HTTP協議版本字段3個字段組成,它們用空格分隔。比如

GET /data/info.html HTTP/1.1 ,方法字段就是HTTP使用的請求方法,比如常見的GET/POST,其中HTTP協議版本有兩種:HTTP1.0/HTTP1.1,可以這樣區別:HTTP1.0對於每個連接都只能傳送一個請求和響應,請求就會關閉,HTTP1.0沒有Host字段;而HTTP1.1在同一個連接中可以傳送多個請求和響應,多個請求可以重疊和同時進行,HTTP1.1必須有Host字段。


2.請求頭部

    Accept: 可接受的MIME類型。Accept-Charset:可接受的字符集。Accept-Encoding:瀏覽器能夠進行解碼的數據編碼方式,比如gzip。Servlet能夠向支持gzip的瀏覽器返回經gzip編碼的HTML頁面。許多情形下這可以減少5到10倍的下載時間。Accept-Language:瀏覽器所希望的語言種類,當服務器能夠提供一種以上的語言版本時要用到。Authorization:授權信息,通常出現在對服務器發送的WWW-Authenticate頭的應答中。Content-Length:表示請求消息正文的長度,對於POST請求來說 Content-Length必須出現。Host: 客戶機通過這個頭告訴服務器,想訪問的主機名。Host頭域指定請求資源的Intenet主機和端口號,必須表示請求url的原始服務器或網關的位置。HTTP/1.1請求必須包含主機頭域Host,否則系統會以400狀態碼返回。

If-Modified-Since:客戶機通過這個頭告訴服務器,資源的緩存時間。只有當所請求的內容在指定的時間後又經過修改才返回它,否則返回304“Not Modified”應答。Referer:客戶機通過這個頭告訴服務器,它是從哪個資源來訪問服務器的(防盜鏈)。包含一個URL,用戶從該URL代表的頁面出發訪問當前請求的頁面。User-Agent:User-Agent頭域的內容包含發出請求的用戶信息。瀏覽器類型,如果Servlet返回的內容與瀏覽器類型有關則該值非常有用。Cookie:客戶機通過這個頭可以向服務器帶數據,這是最重要的請求頭信息之一。Pragma:指定“no-cache”值表示服務器必須返回一個刷新後的文檔,即使它是代理服務器而且已經有了頁面的本地拷貝。From:請求發送者的email地址,由一些特殊的Web客戶程序使用,瀏覽器不會用到它。Connection:處理完這次請求後是否斷開連接還是繼續保持連接。如果Servlet看到這裏的值爲“Keep- Alive”,或者看到請求使用的是HTTP 1.1(HTTP 1.1默認進行持久連接),它就可以利用持久連接的優點.Range:Range頭域可以請求實體的一個或者多個子範圍。
 

3.空行

    通過一個空行,告訴服務器請求頭部到此爲止。

4.請求數據

    若方法字段是GET,則此項爲空,沒有數據。若方法字段是POST,則通常來說此處放置的就是要提交的數據

    比如要使用POST方法提交一個表單,其中有user字段中數據爲“admin”, password字段爲123456,那麼這裏的請求數據就是 user=admin&password=123456,使用&來連接各個字段。

 

二.HTTP響應報文結構

1,狀態行

    由3部分組成,分別爲:協議版本,狀態碼,狀態碼描述,之間由空格分隔

    狀態代碼爲3位數字,200~299的狀態碼錶示成功,300~399的狀態碼指資源重定向,400~499的狀態碼指客戶端請求出錯,500~599的狀態碼指服務端出錯(HTTP/1.1向協議中引入了信息性狀態碼,範圍爲100~199)
 

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