HTTP請求頭中各字段解釋

Accept : 瀏覽器(或者其餘基於HTTP的客戶端程序)能夠接收的內容類型(Content-types),例如 Accept: text/plainjavascript

Accept-Charset:瀏覽器能識別的字符集,例如 Accept-Charset: utf-8html

Accept-Encoding:瀏覽器能夠處理的編碼方式,注意這裏的編碼方式有別於字符集,這裏的編碼方式一般指gzip,deflate等。例如 Accept-Encoding: gzip, deflate
Accept-Language:瀏覽器接收的語言,其實也就是用戶在什麼語言地區,例如簡體中文的就是 Accept-Language: zh-CNjava

Accept-Datetime:設置接受的版本時間,例如Accept-Datetime: Thu, 31 May 2007 20:35:00 GMT
Authorization:在HTTP中,服務器能夠對一些資源進行認證保護,若是你要訪問這些資源,就要提供用戶名和密碼,這個用戶名和密碼就是在Authorization頭中附帶的,格式是「username:password」字符串的base64編碼,例如:Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ中,basic指使用basic認證方式, QWxhZGRpbjpvcGVuIHNlc2FtZQ使用base64解碼就是Aladdin:open sesameweb

Cache-Control:這個指令在request和response中都有,用來指示緩存系統(服務器上的,或者瀏覽器上的)應該怎樣處理緩存,由於這個頭域比較重要,特別是但願使用緩存改善性能的時候,內容也較多,設置請求響應鏈上全部的緩存機制必須遵照的指令,eg:Cache-Control: no-cacheajax

Connection:告訴服務器這個user agent(一般就是瀏覽器)想要使用怎樣的鏈接方式。值有keep-alive和close。http1.1默認是keep-alive。keep-alive就是瀏覽器和服務器 的通訊鏈接會被持續保存,不會立刻關閉,而close就會在response後立刻關閉。但這裏要注意一點,咱們說HTTP是無狀態的,跟這個是否keep-alive沒有關係,不要認爲keep-alive是對HTTP無狀態的特性的改進。
設置當前鏈接和hop-by-hop協議請求字段列表的控制選項算法

Connection: keep-alive
Connection: Upgradeapache

Cookie:瀏覽器向服務器發送請求時發送cookie,或者服務器向瀏覽器附加cookie,就是將cookie附近在這裏的。例如:Cookie:user=admin
設置服務器使用Set-Cookie發送的http cookie
Cookie: $Version=1; Skin=new;瀏覽器

**Content-Length:**一個請求的請求體的內存長度,單位爲字節(byte)。請求體是指在HTTP頭結束後,兩個CR-LF字符組以後的內容,常見的有POST提交的表單數據,這個Content-Length並不包含請求行和HTTP頭的數據長度。
設置請求體的字節長度
Content-Length: 348緩存

Content-MD5:使用base64進行了編碼的請求體的MD5校驗和。例如:Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
基於MD5算法對請求體內容進行Base64二進制編碼服務器

Content-Type:請求體中的內容的mime類型。一般只會用在POST和PUT方法的請求中。例如:Content-Type: application/x-www-form-urlencoded
設置請求體的MIME類型(適用POST和PUT請求)

**Date:**發送請求時的GMT時間。例如:Date: Tue, 15 Nov 1994 08:12:31 GMT
設置消息發送的日期和時間

Expect:標識客戶端須要的特殊瀏覽器行爲
Expect: 100-continue

From:發送這個請求的用戶的email地址。例如:From: user@example.com
設置發送請求的用戶的email地址

Host:被服務器的域名或IP地址,若是不是通用端口,還包含該端口號,例如:Host: www.some.com:182
設置服務器域名和TCP端口號,若是使用的是服務請求標準端口號,端口號能夠省略
Host: en.wikipedia.org:8080
Host: en.wikipedia.org

If-Match :一般用在使用PUT方法對服務器資源進行更新的請求中,意思就是,詢問服務器,如今正在請求的資源的tag和這個If-Match的tag相不相同,若是相同,則證實服務器上的這個資源仍是舊的,如今能夠被更新,若是不相同,則證實該資源被更新過,如今就不用再更新了(不然有可能覆蓋掉其餘人所作的更改)。
設置客戶端的ETag,當時客戶端ETag和服務器生成的ETag一致才執行,適用於更新自從上次更新以後沒有改變的資源

If-Modified-Since:詢問服務器如今正在請求的資源在某個時間以來有沒有被修改過,若是沒有,服務器則返回304狀態來告訴瀏覽器使用瀏覽器本身本地的緩存,若是有修改過,則返回200,併發送新的資源(固然若是資源不存在,則返回404。)
設置更新時間,從更新時間到服務端接受請求這段時間內若是資源沒有改變,容許服務端返回304 Not Modified

If-None-Match:和If-Modified-Since用意差很少,不過不是根據時間來肯定,而是根據一個叫ETag的東西來肯定。關於etag我想在下一篇博客介紹一下。
設置客戶端ETag,若是和服務端接受請求生成的ETage相同,容許服務端返回304 Not Modified

If-Range:告訴服務器若是這個資源沒有更改過(根據If-Range後面給出的Etag判斷),就發送這個資源中在瀏覽器缺乏了的某些部分給瀏覽器,若是該資源以及被修改過,則將整個資源從新發送一份給瀏覽器。

If-Unmodified-Since:詢問服務器如今正在請求的資源在某個時刻以來是否沒有被修改過。

Max-Forwards:限制請求信息在代理服務器或網關中向前傳遞的次數。
Pragma:好像只有一個值,就是:no-cache。Pragma:no-cache 與cache-control:no-cache相同,只不過cache-control:no-cache是http1.1專門指定的,而Pragma:no-cache能夠在http1.0和1.1中使用

Proxy-Authorization:鏈接到某個代理時使用的身份認證信息,跟Authorization頭差很少。例如:Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
爲鏈接代理受權認證信息

Range:在HTTP頭中,」Range」字眼都表示「資源的byte形式數據的順序排列,而且取其某一段數據」的意思。Range頭就是表示請求資源的從某個數值到某個數值間的數據,例如:Range: bytes=500-999 就是表示請求資源從500到999byte的數據。數據的分段下載和多線程下載就是利用這個實現的。

Referer:指當前請求的URL是在什麼地址引用的。例如在www.a.com/index.html頁面中點擊一個指向www.b.com的超連接,那麼,這個www.b.com的請求中的Referer就是www.a.com/index.html。一般咱們見到的圖片防盜鏈就是用這個實現的。

Upgrade:請求服務器更新至另一個協議,例如:Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11

User-Agent:一般就是用戶的瀏覽器相關信息。例如:User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0

Via:用來記錄一個請求通過了哪些代理或網關才被送到目標服務器上。例如一個請求從瀏覽器出發(假設使用http/1.0),發送給名爲 SomeProxy的內部代理,而後被轉發至www.somenet.com的公共代理(使用http/1.1),最後被轉發至目標服務器www.someweb.com,那麼在someweb.com中收到的via 頭應該是:via:1.0 someProxy 1.1 www.someweb.com(apache 1.1)

Warning:記錄一些警告信息。
通用但非標準的HTTP頭(一般,非標準的頭域都是用「X-」開頭,例如」x-powered-by」):

X-Requested-With:主要是用來識別ajax請求,不少javascript框架會發送這個頭域(值爲XMLHttpRequest)

DNT : DO NOT TRACK的縮寫,要求服務器程序不要跟蹤記錄用戶信息。DNT: 1 (開啓DNT) DNT: 0 (關閉DNT)火狐,safari,IE9都支持這個頭域,而且於2011年3月7日被提交至IETF組織實現標準化

X-Forwarded-For : 記錄一個請求從客戶端出發到目標服務器過程當中經歷的代理,或者負載平衡設備的IP。

X-Forwarded-Proto:記錄一個請求一個請求最初從瀏覽器發出時候,是使用什麼協議。由於有可能當一個請求最初和反向代理通訊時,是使用https,但反向代理和服務器通訊時改變成http協議,這個時候,X-Forwarded-Proto的值應該是https

Front-End-Https:微軟使用與其負載平衡的一個頭域。

相關文章
相關標籤/搜索