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,告訴伺服器該網頁是從哪個頁面連結過來的,伺服器因此可以獲得一些資訊用於處理。
相關文章
- http http headers參考文件HTTPHeader
- http headers 大總結HTTPHeader
- HTTP協議常用Headers、方法Methods、狀態碼HTTP協議Header
- HTML headers 屬性HTMLHeader
- 你不能不知道的安全性 HTTP headersHTTPHeader
- scrapy 中的 headers,Resquest,responseHeader
- Jquery正確傳送headers值,Django後臺request.Meta取值jQueryHeaderDjango
- Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight responHeader
- provisional headers are shown 知多少Header
- 爬蟲headers引數爬蟲Header
- 解決介面呼叫的provisional headers are shownHeader
- Ocelot中文文件-轉換HeadersHeader
- 去除掉 Response Headers 中的 X-Powered-ByHeader
- configure: error: libcurl >= 7.28.0 library and headers are required with suErrorHeaderUI
- 構建帶headers-more-nginx-module的nginxHeaderNginx
- configure: error: libcurl >= 7.28.0 library and headers are required with support for httpsErrorHeaderUIHTTP
- 使用requests獲取並向headers中新增cookieHeaderCookie
- PE檔案結構解析 Part3 NT HeadersHeader
- DRF跨域後端解決之django-cors-headers跨域後端DjangoCORSHeader
- 處理多個會話時的 Cookie 和 Headers 複用問題會話CookieHeader
- 處理多個會話時的 Cookie 和 Headers複用問題會話CookieHeader
- Chrome 開發者工具 network 顯示 Provisional headers are shown 的幾種原因ChromeHeader
- Warning: Cannot modify header information - headers already sent by (output started at file_path:line)HeaderORM
- Servlet&HTTP&RequestServletHTTP
- vue.js前端實現excel表格匯出和獲取headers裡的資訊Vue.js前端ExcelHeader
- pytest + yaml 框架 -68.新增全域性請求引數配置verify和headersYAML框架Header
- HTTP Status 400 – Bad RequestHTTP
- 請求報415的異常,通常都是請求頭Headers的Content-Type沒有配置對Header
- configure: error: PCRE2 library and headers are required, or use --with-pcre1 and PCRE >= 8.32 with UTF-8 supportErrorHeaderUI
- Jmeter系列(21)- 詳解 HTTP RequestJMeterHTTP
- 【Azure 儲存服務】訪問Azure Blob File遇見400-Condition Headers not support錯誤的解決之路Header
- nodejs使用request傳送http請求NodeJSHTTP
- 解決spring cloud Feign遠端呼叫服務,新增headers解決攔截器攔截問題SpringCloudHeader
- 基礎篇-http協議《http 簡介、url詳解、request》HTTP協議
- Spring Mvc Http 400 Bad Request問題排查SpringMVCHTTP
- HTTP請求中的Form Data與Request Payload的區別HTTPORM
- 關於 Angular HTTP Interceptor 中 Request 和 Response 的 immutable 特性AngularHTTP
- HTTP請求中 request payload 和 formData 區別?HTTPORM