HTTP消息是由普通ASCII文本組成。消息包括消息頭和數據體部分。消息頭以行為單位,每行以CRLF(回車和換行)結束,消息頭結束后,額外增加一個CRLF,之后內容就是數據體部分了。
http請求:
實例如下:
GET/sample.jspHTTP/1.1
Accept:image/gif.image/jpeg,*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
Accept-Encoding:gzip,deflate
username=jinqiao&password=1234
請求方式(RequestMethod):OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE和CONNECT。
GET 請求獲取Request-URI所標識的資源
POST 在Request-URI所標識的資源后附加新的數據
HEAD 請求獲取由Request-URI所標識的資源的響應消息報頭
PUT 請求服務器存儲一個資源,並用Request-URI作為其標識
DELETE 請求服務器刪除Request-URI所標識的資源
TRACE 請求服務器回送收到的請求信息,主要用於測試或診斷
CONNECT 保留將來使用
OPTIONS 請求查詢服務器的性能,或者查詢與資源相關的選項和需求
User-Agent:
客戶端的瀏覽器信息。
Connection:
close表示使用短連接,Keep-Alive表示客戶端支持持久連接。
Date:
消息產生的當前時間。
Accept-Language:
客戶端支持的語言。
Cache-Control:
客戶端是否支持cache。no-cache表示客戶端不支持cache,如max-age=3600,告訴User Agent 該請求的響應結果在多長時間內有效,在有效期內,當用戶再次需要訪問時,直接從客戶端本地提取,不需要訪問服務器。
Referer:
Referer用以告訴服務器該請求來自於哪個URL,可以用追蹤用戶的WEB訪問路徑。
If-Modified-Since:
如果請求消息包含If-Modified-Since標題 域,GET方法的語法就變成“條件GET”,即“(conditional GET)”。 條件GET方法可以對指定資源進行判斷,如果它在If-Modified-Since標題域中的指定日期后發生了更新,才啟動傳輸,否則不傳輸。這種條件 GET允許被緩存的實體在不必經過多次請求或不必要的數據傳輸就能進行刷新,從而有助於降低網絡負載。
Last-Modified:
Sun, 03 Dec 2008 23:52:56 GMT
ETag: “1cbf3-dfd-3a2adcd8″
一般應用在文件下載上,用於標識響應內容的最后修改時間或內容較驗碼,當下一次User agent需要時,服務首先判斷這二個值是否跟服務器上一致,一樣則不需要返回內容。
Expires:該請求的響應結果在什么時間失效,在沒有失效之前,代理可直接從緩存中返回以前的響應結果。
Host:
指定請求資源的主機和端口號。HTTP/1.1請求必須指定Host,否則服務器會返回400狀態碼。
http響應:
實例如下:
HTTP/1.1 200 OK
Date: Mon, 04 May 2015 04:47:13 GMT
Server: Apache
Cache-Control: max-age=0
Expires: Mon, 04 May 2015 04:47:13 GMT
Vary: Accept-Encoding,User-Agent
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html;charset=utf-8
X-Pad: avoid browser bug
Date: Mon, 04 May 2015 04:47:13 GMT
Server: Apache
Cache-Control: max-age=0
Expires: Mon, 04 May 2015 04:47:13 GMT
Vary: Accept-Encoding,User-Agent
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html;charset=utf-8
X-Pad: avoid browser bug
狀態行包括:HTTP協議版本號、狀態碼、狀態碼的文本描述信息。如:HTTP/1.1 200 OK
狀態碼由一個三位數組成,狀態碼大體有5種含義:
1. 1xx。信息,請求收到,繼續處理。
2. 2xx。成功。200請求成功;206斷點續傳。
3. 3xx。重定向。一般跳轉到新的地址。
4. 4xx。客戶端錯誤。404文件不存在
5. 5xx。服務器錯誤。500內部錯誤。
Set-Cookie:
服務器設置客戶端Cookie。設置格式是name=value,設置多個參數時中 間用分號隔開。Set-Cookie時還會用到幾個參數:PATH設置有效的路徑,DOMAIN設置cookie生效的域名,Expire設置 cookie的有效時間,0表示關閉瀏覽器就失效。
Location:
當服務器返回3xx重定向時,該參數實現重定向。廣告鏈接的跳轉就使用這種協議。
Content-Length:附屬體(數據實體)的長度