請求首部字段
定義:請求首部字段是從客戶端到服務器發送請求報文中所使用的字段,里面包含了附加信息、客戶端信息以及對響應內容相關的優先級等內容
1、Accept
通知服務器用戶代理可處理的媒體類型及媒體類型的相對優先級,可使用type/subtype這種形式,一次指定多種媒體類型
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
q表示權重,默認值為1.0,當服務器提供多種內容時,將會有優先返回權重值最高的媒體類型
下面舉幾個例子:
文本文件:
text/html,text/plain,text/css...
application/xhtml+xml,application/xml...
圖片文件:
image/jpeg,image/gif,image/png...
視頻文件:
video/mpeg,video/quicktime...
應用程序使用的二進制文件
application/octet-stream,application/zip...
2、Accept-Cherset
通知服務器用戶代理支持的字符集及字符集的相對優先級,可一次性指定多個字符集。
該首部字段可用權重q值來表示相對優先級
該首部字段應用於內容協商機制的服務器驅動協商
Accept-Charset: iso-8859-5, unicode-1-1;q=0.8
3、Accept-Encoding
告知服務器用戶代理支持的內容編碼及內容編碼優先級順序,可一次性指定多種內容編碼
Accept-Encoding: gzip, deflate
常用的幾種編碼格式:
gizp:由文件壓縮程序gzip(GUN zip)生成的編碼格式
compress:由UNIX文件壓縮程序compress生成的編碼格式
deflate:組合使用zlib格式及由deflate壓縮格式生成的編碼格式
jdentity:不執行壓縮或不會變化的默認編碼格式
同樣,這里可以使用q值表示相對優先級,也可以使用(*)作為通配符,指定任意的編碼格式
4、Accept-Lanuage
告知服務器用戶代理能夠處理的自然語言集,以及其相對有限集,可一次指定多種自然語言集
同樣可使用權重值q表示相對優先級
Accept-Lanuage: zh-cn,zh;q=0.7,en=us,en;q=0.3
5、Authorization
告知服務器用戶代理的認證信息(證書值)。
通常想要通過驗證的用戶代理會在接受到第一次返回的401狀態碼響應后,把首部字段加入請求中,共用緩存接收到含有該字段的請求時操作處理會有所差異
6、Expect
客戶端使用該字段告知服務器,期望出現某種特定行為
如果服務器無法理解期望作出回應而發生錯誤,會返回狀態碼417Expect Failed,客戶端可以利用該字段,寫明所期望的擴展
http/1.1規范值定義了100-continue(轉台嗎100Continue之意)
Expect: 100-continue
7、From
告知服務器使用用戶代理的用戶墊子郵件地址
目的:顯示搜索引擎等用戶代理的負責人的電子郵件聯系方式
From: IMyalost@163.com
8、Host
告知服務器請求的資源所處的互聯網主機名和端口號
Host首部字段是在HTTP/1.1規范內唯一一個必須被包含在請求內的首部字段
Host: www.baidu.com
9、If-Match
格式如If-xxx這樣的請求首部字段,都可以稱之為條件請求,服務器收到請求,只有判定條件為真時,才會執行請求
該字段告知服務器匹配資源所用的實體標記(ETag)值,這時無法使用弱ETag值
如果判斷條件不為真,則返回412Precondition Failed響應
還可以使用(*)指定If-Match的字段值,這種情況下服務器將忽略ETag值,只要資源存在就處理請求
If-Match: "123456"
10、If-Modified-Since
條件請求,告知服務器若字段指定值早於資源更新時間,則希望能處理請求,如果在該字段指定的日期時間大於資源更新時間,則返回304Not Modified響應
用於確認代理或者客戶端擁有的本地資源的有消息
If-Modified-Since: Thu, 15 Apr 2004 00:00:00 GMT
11、If-None-Match
條件請求,和If-Match作用相反。當該字段值的實體標記(ETag)值與請求資源的ETag不一致時,告知服務器處理該請求
在GET或HEAD方法中使用該字段可獲取最新的資源
12、If-Range
條件請求,告知服務器若指定的值和請求資源的值一致,則作為范圍請求處理,反之,則返回全部資源
request: response:
GET /index.html 206 Partial Content
If-Range: "123456" Content-Range: bytes 5001-10000/10000
Range: bytes=5001-10000 Content-Length:5000
上面的請求和資源匹配一致,那么久作為范圍請求處理
13、If-Unmodified-Since
條件請求,該字段和If-Unmodified-Since字段作用相反,作用是告知服務器,指定的請求資源只有在字段值內指定的日期之后,未發生更新的情況下,才能處理請求。
如指定時間之后發生更新,則返回412 Precondition Failed作為響應返回
If-Unmodified-Since: Thu, 03 Jul 2016 00:00:00 GMT
14、Max-Forwards
我們都知道使用http協議通信時,請求可能會經過代理等多台服務器,如果由於某些原因導致請求轉發失敗,那么客戶端收不到響應,我們對此一無所知
通過TRACE或者OPTIONS方法,發送包含該字段的請求時,該字段以十進制整數形式指定可經過的服務器最大數目
簡單來講,就是指定Max-Forwards的值,每經過一次轉發,就-1.當值變為0.直接返回響應
Max-Forwards: 10
15、Proxy-Authorization
收到代理服務器發來的認證質詢時,客戶端向代理服務器發送包含首部字段的請求,以告知服務器所需要的認證的信息
Proxy-Authorization: Basic dGLwoPNLAGKGFY5
16、Range
對於只需獲取部分資源的范圍請求,包含首部字段Range即可告知服務器資源的指定范圍
接收到附帶Range字段的服務器,會返回206Partial Content的響應;無法處理請求時,則返回200 OK的響應及全部資源
Range: bytes=5001-10000
17、Referer
告知服務器請求的原始資源的URI
Referer:www,baidu.com/index.xml
18、TE
告知服務器客戶端能夠處理響應的傳輸編碼方式及相對優先級
TE:gzip, deflate;q=0.5
該字段還可以指定伴隨trailer字段的分塊傳輸編碼的方式
TE:trailers
19、User-Agent
該字段會將創建請求的瀏覽器和用戶代理名稱等信息傳給服務器
如果由網絡爬蟲發起請求,可能會在請求中添加爬蟲作者的墊子郵件地址。因此,如果請求經過代理,那么中間也很可能被添加上代理服務器名稱
User-Agent: Mozilla/5.0 (windows NT 6.1; WOW64; rv13.0) Gecko/=20100101 Firfox/13.0.1