當我們打開一個網頁時,浏覽器要向網站服務器發送一個HTTP請求頭,然後網站服務器根據HTTP請求頭的內容生成當次請求的內容發送給浏覽器。你明白HTTP請求頭的具體含意嗎?下面一條條的為你詳細解讀,先看某一次HTTP請求頭的具體內容:
Accept-Language: zh-cn,zh;q=0.5
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; 域名)
Host: 域名
Connection: Keep-Alive
下面根據以上HTTP請求內容的先後順序一條條的解讀:
Accept-Language: zh-cn,zh;q=0.5
意思:浏覽器支持的語言分別是中文和簡體中文,優先支持簡體中文。
詳解:
Accept-Language表示浏覽器所支持的語言類型;
zh-cn表示簡體中文;zh 表示中文;
q是權重系數,范圍 0 =< q <= 1,q 值越大,請求越傾向於獲得其“;”之前的類型表示的內容,若沒有指定 q 值,則默認為1,若被賦值為0,則用於提醒服務器哪些是浏覽器不接受的內容類型。
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
意思:浏覽器支持的字符編碼分別是 GB2312、utf-8 和任意字符,優先順序是 GB2312、utf-8、*。
詳解:
Accept-Charset告訴 Web 服務器,浏覽器可以接受哪些字符編碼;
GB2312是中國國家標准簡體中文字符集,全稱《信息交換用漢字編碼字符集·基本集》,又稱GB0,由中國國家標准總局發布,1981年5月1日實施。GB2312 編碼通行於中國大陸;新加坡等地也采用此編碼。
utf-8是 Unicode 的一種變長字符編碼又稱萬國碼,由 Ken Thompson 於1992年創建,現在已經標准化為 RFC 3629。
*表示任意字符編碼,雖然 q 都是等於 0.7,但明確指定的 GB2312,utf-8 比 * 具有更高的優先級。
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
意思:浏覽器支持的 MIME 類型分別是 text/html、application/xhtml+xml、application/xml 和 */*,優先順序是它們從左到右的排列順序。
詳解:
Accept表示浏覽器支持的 MIME 類型;
MIME的英文全稱是 Multipurpose Internet Mail Extensions(多功能 Internet 郵件擴充服務),它是一種多用途網際郵件擴充協議,在1992年最早應用於電子郵件系統,但後來也應用到浏覽器。
text/html,application/xhtml+xml,application/xml 都是 MIME 類型,也可以稱為媒體類型和內容類型,斜槓前面的是 type(類型),斜槓後面的是 subtype(子類型);type 指定大的范圍,subtype 是 type 中范圍更明確的類型,即大類中的小類。
Text:用於標准化地表示的文本信息,文本消息可以是多種字符集和或者多種格式的;
text/html表示 html 文檔;
Application:用於傳輸應用程序數據或者二進制數據;
application/xhtml+xml表示 xhtml 文檔;
application/xml表示 xml 文檔。
Accept-Encoding: gzip, deflate
意思:浏覽器支持的壓縮編碼是 gzip 和 deflate。
詳解:
Accept-Encoding表示浏覽器有能力解碼的編碼類型;
gzip是 GNU zip 的縮寫,它是一個 GNU 自由軟件的文件壓縮程序,也經常用來表示 gzip 這種文件格式。
deflate是同時使用了 LZ77 算法與哈夫曼編碼(Huffman Coding)的一個無損數據壓縮算法。
User-Agent: Mozilla/5.0 (compatible;域名)
意思:使用的用戶代理是 Mozilla/5.0 (compatible; 域名)。
詳解:
User-Agent(用戶代理),簡稱 UA,它是一個特殊字符串頭,使得服務器能夠識別客戶端使用的操作系統及版本、CPU 類型、浏覽器及版本、浏覽器渲染引擎、浏覽器語言、浏覽器插件等。
Mozilla/5.0:Mozilla 是浏覽器名,版本是 5.0;
compatible(兼容的)表示平台是兼容模式;
Host: 域名
Host表示請求的服務器網址;
Connection: Keep-Alive
Connection表示客戶端與服務連接類型;
Keep-Alive表示持久連接;
請求頭
Accept:客戶機通過這個頭,告訴服務器,它支持哪些數據類型
Accept-Charset::客戶機通過這個頭,告訴服務器,它支持的編碼
Accept-Encoding: 客戶機通過這個頭,告訴服務器,支持哪種數據壓縮格式
Accept-Language: 客戶機采用的是哪個語言
Host:客戶機通過這個頭,告訴服務器,想訪問服務器哪台主機
If-Modified-Since:客戶機通過這個頭,告訴服務器,數據緩存的時間
Referer:客戶機通過這個頭,告訴服務器,客戶機是從哪個頁面來的(防盜鏈)
User-Agent: 說明客戶機操作系統信息,以及浏覽器信息
Cookie:客戶機通過這個頭,可以帶點數據給服務器
Connection
響應頭
Location:服務器通過這個頭告訴浏覽器去訪問哪個頁面,這個頭通常配合302狀態碼使用
Content-Encoding: 服務器通過這個頭告訴浏覽器,回送的數據采用的壓縮格式
Content-Length: 服務器通過這個頭告訴浏覽器,回送的數據的大小
Content-Type: 服務器通過這個頭告訴浏覽器,回送數據的類型
Last-Modified: 服務器通過這個頭告訴浏覽器,資源的最後修改時間
Refresh:服務器通過這個頭告訴浏覽器,定時刷新網頁
Content-Disposition: attachment; filename=aaa.zip:服務器通過這個頭告訴浏覽器,以下載方式打開數據
ETag: W/"7777-1242234904000":緩存相關的頭,為每一個資源配一個唯一的編號
Expires: 0
Cache-Control: no-cache
Pragma: no-cache 這三個頭組合使用,讓浏覽器不要緩存數據