HTTP Headers的Request Headers
Accept
HTTP Header中Accept-Encoding 是瀏覽器發給伺服器,宣告瀏覽器支援的 MIME 型別
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8。意思是:瀏覽器支援的MIME型別分別是text/html、application/xhtml+xml、application/xml和*/*,優先順序是它們從左到右的排列順序。
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
HTTP Header中Accept-Encoding 是瀏覽器發給伺服器,宣告瀏覽器支援的編碼型別
常見的有
Accept-Encoding: compress, gzip //支援compress 和gzip型別
Accept-Encoding: //預設是identity
Accept-Encoding: * //支援所有型別 Accept-Encoding: compress;q=0.5, gzip;q=1.0//按順序支援 gzip , compress
Accept-Encoding: gzip;q=1.0, identity; q=0.5, *;q=0 // 按順序支援 gzip , identity
伺服器返回的對應的型別編碼header是 content-encoding.伺服器處理accept-encoding的規則如下所示
- 如果伺服器可以返回定義在Accept-Encoding 中的任何一種Encoding型別, 那麼處理成功(除非q的值等於0, 等於0代表不可接受)
- “*” 代表任意一種Encoding型別 (除了在Accept-Encoding中顯示定義的型別)
- 如果有多個Encoding同時匹配, 按照q值順序排列
- identity總是可被接受的encoding型別(除非顯示的標記這個型別q=0) ,
如果Accept-Encoding的值是空, 那麼只有identity是會被接受的型別
如果Accept-Encoding中的所有型別伺服器都沒發返回, 那麼應該返回406錯誤給客戶端
如果request中沒有Accept-Encoding 那麼伺服器會假設所有的Encoding都是可以被接受的。
如果Accept-Encoding中有identity 那麼應該優先返回identity (除非有q值的定義,或者你認為另外一種型別是更有意義的)
注意:
如果伺服器不支援identity 並且瀏覽器沒有傳送Accept-Encoding,那麼伺服器應該傾向於使用HTTP1.0中的 “gzip” and “compress” , 伺服器可能按照客戶端型別 傳送更適合的encoding型別大部分HTTP1.0的客戶端無法處理q值。
Accept-Language
Accept-Language表示瀏覽器所支援的語言型別;
zh-cn表示簡體中文;zh 表示中文;"*"表示萬用字元;
q是權重係數,範圍 0 =< q <= 1,q 值越大,請求越傾向於獲得其“;”之前的型別表示的內容,若沒有指定 q 值,則預設為1,若被賦值為0,則用於提醒伺服器哪些是瀏覽器不接受的內容型別。
Referer
當瀏覽器向web伺服器傳送請求的時候,一般會帶上Referer,告訴伺服器該網頁是從哪個頁面連結過來的,伺服器因此可以獲得一些資訊用於處理。
相關文章
- Request Headers 的其它 fields 值Header
- http協議學習-請求頭Request HeadersHTTP協議Header
- http協議學習系列(請求頭---Request Headers)HTTP協議Header
- http http headers參考文件HTTPHeader
- http headers 大總結HTTPHeader
- 理解Angular的providers - 給Http新增預設headersAngularIDEHTTPHeader
- HTTP協議常用Headers、方法Methods、狀態碼HTTP協議Header
- HTML headers 屬性HTMLHeader
- scrapy 中的 headers,Resquest,responseHeader
- 你不能不知道的安全性 HTTP headersHTTPHeader
- [譯] 如何使用 HTTP Headers 來保護你的 Web 應用HTTPHeaderWeb
- Jquery正確傳送headers值,Django後臺request.Meta取值jQueryHeaderDjango
- 爬蟲headers引數爬蟲Header
- provisional headers are shown 知多少Header
- php 獲取 http 響應頭 get_headers 方法的一個細節PHPHTTPHeader
- Ocelot中文文件-轉換HeadersHeader
- PHP headers already sent 原因分析PHPHeader
- 解決介面呼叫的provisional headers are shownHeader
- 去除掉 Response Headers 中的 X-Powered-ByHeader
- 構建帶headers-more-nginx-module的nginxHeaderNginx
- Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight responHeader
- 使用requests獲取並向headers中新增cookieHeaderCookie
- PHP中get_headers函式使用方法解析PHPHeader函式
- rcv_shipment_headers 中的receipt_num的產生規則Header
- DRF跨域後端解決之django-cors-headers跨域後端DjangoCORSHeader
- Warning: Cannot send session cookie - headers already sent 解決SessionCookieHeader
- cannot send session cache limiter-headers already sent (output start at ............)SessionMITHeader
- Chrome 開發者工具 network 顯示 Provisional headers are shown 的幾種原因ChromeHeader
- 處理多個會話時的 Cookie 和 Headers複用問題會話CookieHeader
- 處理多個會話時的 Cookie 和 Headers 複用問題會話CookieHeader
- configure: error: libcurl >= 7.28.0 library and headers are required with support for httpsErrorHeaderUIHTTP
- vue.js前端實現excel表格匯出和獲取headers裡的資訊Vue.js前端ExcelHeader
- Servlet&HTTP&RequestServletHTTP
- PHP Simulation HTTP Request(undone)PHPHTTP
- Jmeter之HTTP Request DefaultsJMeterHTTP
- pytest + yaml 框架 -68.新增全域性請求引數配置verify和headersYAML框架Header
- Warning: Cannot modify header information - headers already sent by (output started at file_path:line)HeaderORM
- HTTP Status 400 – Bad RequestHTTP