一、HTTP協議定位
HTTP協議是hypertext transfer protocol(超文本傳輸協議)的簡寫,他是TCP/IP協議的一個應用層協議,用於定義WEB瀏覽器與WEB服務器之間交換數據的過程。
二、HTTP1.0與HTTP1.1的區別
1.0協議中,客戶端與web服務器建立連接后,只能獲得一個web資源。
1.1協議中,客戶端與web服務器建立連接后,在一個連接上獲取多個web資源。
三、HTTP請求
一個完整的HTTP請求包括:一個請求行、若干消息頭、以及實體內容;
請求行:用於描述客戶端的請求方式,請求的資源名稱。以及使用的HTTP協議版本
多個消息頭:消息頭用於描述客戶端請求哪台主機,以及客戶端的一些環境信息等。
一個空行:格式
實體內容:
四、HTTP常見請求頭
Accept:客戶機用於告訴服務器它支持的數據類型;
Accept-Charset:客戶機采用的編碼;
Accept-Encoding:客戶機支持的壓縮格式;
Accept-Language:客戶機的語言環境;
Host:告訴服務器想訪問的主機名;
If-Modified-Sinec:資源的緩存時間;
Referer:告訴服務器,它是從哪個資源來訪問服務器的(防盜鏈)
User-Agent:客戶機通過這個頭告訴服務器,客戶機的軟件環境。
Cookie:向服務器帶數據;
Connection:close/Keep-Alive;保持連接或者關閉連接
Date:發送請求時間
Range:指示服務器只傳輸一部分Web資源。可以用來實現斷點下載;
五、HTTP響應
一個HTTP響應代表服務器向客戶端回送的數據,包括一個狀態行、若干消息頭,以及實體內容。
狀態行:狀態行用於描述服務器對於請求的處理結果。
格式—> HTTP版本號 狀態碼 原因敘述(CRLF)
狀態碼用於表示服務器對請求的處理結果,它是一個三位的十進制數。響應狀態碼分為5類,如下所示:
100~199:表示成功接受請求,要求客戶端繼續提交下一次請求才能完成整個處理過程;
200~299:表示成功接收請求並已完成整個處理過程,常用200;
300~399:為完成請求,客戶需進一步細化請求。例如,請求的資源已經移動一個新地址、常用302、307和304;
400~499:客戶端的請求有錯誤,常用404;
500~599:服務器端出現錯誤,常用500;
響應頭:響應消息頭用於描述服務器的基本信息,以及數據的描述,服務器通過這些數據的描述信息,可以通知客戶端如何處理等一會兒它會送的數據。
實體內容:代表服務器想客戶端會送的數據。
六、常見響應頭
Location:配合302狀態碼使用,用於告訴客戶找誰;
Server:告訴瀏覽器服務器的類型;
Content-Encoding:告訴瀏覽器數據的壓縮格式;
Content-Length:告訴瀏覽器回送數據的長度;
Content-Language:告訴瀏覽器回送數據的語言環境;
Content-Type:告訴瀏覽器回送數據的類型;
Last-Modified:告訴瀏覽器當前資源的緩存時間;
Refresh:告訴瀏覽器隔多長時間刷新一次;
Content-Disposition:告訴瀏覽器以下載方式打開數據;
Transfer-Encoding:告訴瀏覽器數據的傳送格式
Set-Cookie:緩存相關;
Transfer-Encoding:
Set-Cookie:
ETag:緩存相關;
Expires:服務器通過這個頭,告訴瀏覽器把回送的資源緩存多長時間,-1或0,則是不緩存
Cache-Control:no-cache,控制瀏覽器不要緩存數據;
Pragma:no-cache,控制瀏覽器不要緩存數據;
注:以上三種緩存控制頭是由於歷史原因造成的;
Connection:close/Keep-Alive;
Date:
Accept-Ranges:說明服務器是否支持Range,不支持就返回Accept-Ranges:none;