我在分享一下,四大請求首部欄位之一,我在之前的一篇文章--《常見Http首部欄位》寫道了常見的首部欄位,裡面包含4種常見的請求首部欄位,但是我並沒有詳細的解釋這些欄位,我們們大家都是講究的人,既然寫了我們們就寫的明明白白的,我在《通用首部欄位詳解--四大首部欄位之一》中詳解了通用首部欄位,今天我們就看看在四大首部欄位中欄位最多的請求首部欄位(19個),
請求首部欄位,顧名思義就知道,使用在請求方,那隻能攜帶客戶端的資訊,客戶端一些請求要求,客戶端要求響應的優先順序之類的,接下來我們們就看看這19欄位的
1、 Accpet
Accept的意思-接受,哪聰明的小夥伴是不是就可以猜到了呢,沒錯它就是來告知伺服器客戶端能接受的“媒體型別”,“媒體型別”有是什呢,其實我們可以分成,文字型別、圖片型別、視訊型別、還有二進位制型別
文字型別 text/html, text/css ......
圖片型別:image/png image/jpg image/gif .....
視訊型別:video/mpeg video/quitime .......
應用程式的二進位制 : application/zip applilcation/octet-stream........
主要的目的就是告訴伺服器,客戶端能夠接受的媒體型別,多個型別以逗號隔開,如果加權重的話以分號;隔開q=1,q的是指0-1最多三位小數的數字,預設是1
2、Accept-Charset
Accept-Charset 字面意思大家都可想而知,沒錯就是客戶端可接受的字符集,也可以理解為優先處理字符集,當然q可以一起使用。
3、 Accept-Language
字面意思大家都可想而知,沒錯就是客戶端可接受的自然語言,也可以理解為優先處理的語言,當然q可以一起使用。
4、 Accept-Encoding
字面意思大家都可想而知,沒錯就是客戶端可接受的編碼格式,也可以理解為優先處理的編碼格式,當然q可以一起使用。
常用的 gzip comperss
5 、If-Match
這個欄位比較有意思,它的值是一個"能夠表示唯一資源的字串“,是響應首部欄位的ETag的值,作用是和響應端的ETag做比較,如果值一致,響應端就會返回200 和資源,如果不一致就會返回412,客戶端再次請求資源
6、If-None-Match
這個和If-Match左右相反
7、If-Modified-since
這個欄位也比較有意思,當請求首部攜帶這個欄位請求資源的時候,伺服器會用請求首部字值:’日期值‘和資源實體的Last-Modified對比,
如果一樣就返回304
否則返回200 和響應體
8、If-Unmodified-Match
和If-Modified-since相反但是,如果一樣就返回412,客戶端再次請求
9、If-Ranges
這個欄位也比較有意思,他一般結合Range請求首部欄位使用,它的值也是一個"能夠唯一表示資源的字串“,伺服器會和ETag的值做比較,
如果這一致返回206 和請求的返回值
如果不一致直接返回200和全部的響應資源
10、Range
這個欄位用於範圍請求,如果伺服器支援範圍請求,在請求首部可以新增這個欄位,值為”batys:1000-10000“表示請求的範圍是100-10000區間,
伺服器發現範圍請求沒有超過資源範圍,就會返回206 ok
如果請求的範圍超過資源的範圍就會返回200ok,
如果伺服器不支援也會返回200ok
11、Host
這個欄位一般會出現在,同一個ip下多個虛擬機器的請求,用於區分同於ip下不同虛擬機器
12、From
From:’郵箱地址‘,告知伺服器如果有什麼問題可以聯絡這個郵箱
13、Authorization
用於伺服器要求客戶端驗證時,請求時帶的欄位(一般是DIGUST和BASIC驗證,可以看《DIGEST認證》《BASIC認證》)
14、Proxy-Authorization
用伺服器要求代理端web驗證時,請求時帶的欄位
15、User-Agent
客戶端的一些資訊,有時候會帶使用者的郵箱
16、Referer
使用者表示請求原始方的URI
17、Expcet
詢問伺服器能不能做某些事情,
如果伺服器可以做到返回100 contiune
否則 417 Expectation Failed
18、TE
大家還記得Accept-Encoding首部欄位嗎?TE和Accept-Encoding功能很像,用於能夠處理的傳輸編碼格式,不過另外還有一個功能還可以知道Trailer分塊格式
19、Max-Forwrads
這個欄位也是非常有意思的,他用於最大逐跳,他的值是阿拉伯數字,主要用於測試中間伺服器那個出問題了,比如現在有一個請求需要經過10箇中間伺服器才能請求到真正的伺服器,但是突然中間有個伺服器down,其實前端是不知道那個伺服器down,就需要請求首部加入Max-Forwrads來測試那個伺服器出現問題了。