1. 程式人生 > 實用技巧 >http協議(三、請求頭、響應頭欄位)

http協議(三、請求頭、響應頭欄位)

原作者: 留七七, 地址:http://www.jianshu.com/p/6e86903d74f7

常用標準請求頭欄位


Accept設定接受的內容型別

Accept: text/plain

Accept-Charset設定接受的字元編碼

Accept-Charset: utf-8

Accept-Encoding設定接受的編碼格式

Accept-Encoding: gzip, deflate

Accept-Datetime設定接受的版本時間

Accept-Datetime: Thu, 31 May 2007 20:35:00 GMT

Accept-Language設定接受的語言

Accept-Language: en-US

Authorization設定HTTP身份驗證的憑證

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Cache-Control設定請求響應鏈上所有的快取機制必須遵守的指令

Cache-Control: no-cache

Connection設定當前連線和hop-by-hop協議請求欄位列表的控制選項

Connection: keep-alive
Connection: Upgrade

Content-Length設定請求體的位元組長度

Content-Length: 348

Content-MD5設定基於MD5演算法對請求體內容進行Base64二進位制編碼

Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==

Content-Type設定請求體的MIME型別(適用POST和PUT請求)

Content-Type: application/x-www-form-urlencoded

Cookie設定伺服器使用Set-Cookie傳送的http cookie

Cookie: $Version=1; Skin=new;

Date設定訊息傳送的日期和時間

Date: Tue, 15 Nov 1994 08:12:31 GMT

Expect標識客戶端需要的特殊瀏覽器行為

Expect: 100-continue

Forwarded披露客戶端通過http代理連線web服務的源資訊

Forwarded: for=192.0.2.60;proto=http;by=203.0.113.43
Forwarded: for=192.0.2.43, for=198.51.100.17

From設定傳送請求的使用者的email地址

From:[email protected]

Host設定伺服器域名和TCP埠號,如果使用的是服務請求標準埠號,埠號可以省略

Host: en.wikipedia.org:8080
Host: en.wikipedia.org

If-Match設定客戶端的ETag,當時客戶端ETag和伺服器生成的ETag一致才執行,適用於更新自從上次更新之後沒有改變的資源

If-Match: "737060cd8c284d8af7ad3082f209582d

If-Modified-Since設定更新時間,從更新時間到服務端接受請求這段時間內如果資源沒有改變,允許服務端返回304 Not Modified

If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT

If-None-Match設定客戶端ETag,如果和服務端接受請求生成的ETage相同,允許服務端返回304 Not Modified

If-None-Match: "737060cd8c284d8af7ad3082f209582d"

If-Range設定客戶端ETag,如果和服務端接受請求生成的ETage相同,返回缺失的實體部分;否則返回整個新的實體

If-Range: "737060cd8c284d8af7ad3082f209582d"

If-Unmodified-Since設定更新時間,只有從更新時間到服務端接受請求這段時間內實體沒有改變,服務端才會傳送響應

If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT

Max-Forwards限制代理或閘道器轉發訊息的次數

Max-Forwards: 10

Origin標識跨域資源請求(請求服務端設定Access-Control-Allow-Origin響應欄位)

Origin:http://www.example-social-network.com

Pragma設定特殊實現欄位,可能會對請求響應鏈有多種影響

Pragma: no-cache

Proxy-Authorization為連線代理授權認證資訊

Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Range請求部分實體,設定請求實體的位元組數範圍,具體可以參見HTTP/1.1中的Byte serving

Range: bytes=500-999

Referer設定前一個頁面的地址,並且前一個頁面中的連線指向當前請求,意思就是如果當前請求是在A頁面中傳送的,那麼referer就是A頁面的url地址(軼事:這個單詞正確的拼法應該是"referrer",但是在很多規範中都拼成了"referer",所以這個單詞也就成為標準用法)

Referer:http://en.wikipedia.org/wiki/Main_Page

TE設定使用者代理期望接受的傳輸編碼格式,和響應頭中的Transfer-Encoding欄位一樣

TE: trailers, deflate

Upgrade請求服務端升級協議

Upgrade: HTTP/2.0, HTTPS/1.3, IRC/6.9, RTA/x11, websocket

User-Agent使用者代理的字串值

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/21.0

Via通知伺服器代理請求

Via: 1.0 fred, 1.1 example.com (Apache/1.1)

Warning實體可能會發生的問題的通用警告

Warning: 199 Miscellaneous warning

常用非標準請求頭欄位


X-Requested-With標識Ajax請求,大部分js框架傳送請求時都會設定它為XMLHttpRequest

X-Requested-With: XMLHttpRequest

DNT請求web應用禁用使用者追蹤

DNT: 1 (Do Not Track Enabled)
DNT: 0 (Do Not Track Disabled)

X-Forwarded-For一個事實標準,用來標識客戶端通過HTTP代理或者負載均衡器連線的web伺服器的原始IP地址

X-Forwarded-For: client1, proxy1, proxy2
X-Forwarded-For: 129.78.138.66, 129.78.64.103

X-Forwarded-Host一個事實標準,用來標識客戶端在HTTP請求頭中請求的原始host,因為主機名或者反向代理的埠可能與處理請求的原始伺服器不同

X-Forwarded-Host: en.wikipedia.org:8080
X-Forwarded-Host: en.wikipedia.org

X-Forwarded-Proto一個事實標準,用來標識HTTP原始協議,因為反向代理或者負載均衡器和web伺服器可能使用http,但是請求到反向代理使用的是https

X-Forwarded-Proto: https

Front-End-Https微軟應用程式和負載均衡器使用的非標準header欄位 Front-End-Https: on
X-Http-Method-Override請求web應用時,使用header欄位中給定的方法(通常是put或者delete)覆蓋請求中指定的方法(通常是post),如果使用者代理或者防火牆不支援直接使用put或者delete方法傳送請求時,可以使用這個欄位

X-HTTP-Method-Override: DELETE

X-ATT-DeviceId允許更簡單的解析使用者代理在AT&T裝置上的MakeModel/Firmware

X-Att-Deviceid: GT-P7320/P7320XXLPG

X-Wap-Profile設定描述當前連線裝置的詳細資訊的xml檔案在網路中的位置

x-wap-profile:http://wap.samsungmobile.com/uaprof/SGH-I777.xml

Proxy-Connection早起HTTP版本中的一個誤稱,現在使用標準的connection欄位

Proxy-Connection: keep-alive

X-UIDH服務端深度包檢測插入的一個唯一ID標識Verizon Wireless的客戶

X-UIDH: ...

X-Csrf-Token,X-CSRFToken,X-XSRF-TOKEN防止跨站請求偽造

X-Csrf-Token: i8XNjC4b8KVok4uw5RftR38Wgp2BFwql

X-Request-ID,X-Correlation-ID標識客戶端和服務端的HTTP請求

X-Request-ID: f058ebd6-02f7-4d3f-942e-904344e8cde5

常用標準響應頭欄位


Access-Control-Allow-Origin指定哪些站點可以參與跨站資源共享

Access-Control-Allow-Origin: *

Accept-Patch指定伺服器支援的補丁文件格式,適用於http的patch方法

Accept-Patch: text/example;charset=utf-8

Accept-Ranges伺服器通過byte serving支援的部分內容範圍型別

Accept-Ranges: bytes

Age物件在代理快取中暫存的秒數

Age: 12

Allow設定特定資源的有效行為,適用方法不被允許的http 405錯誤

Allow: GET, HEAD

Alt-Svc伺服器使用"Alt-Svc"(Alternative Servicesde的縮寫)頭標識資源可以通過不同的網路位置或者不同的網路協議獲取

Alt-Svc: h2="http2.example.com:443"; ma=7200

Cache-Control告訴服務端到客戶端所有的快取機制是否可以快取這個物件,單位是秒

Cache-Control: max-age=3600

Connection設定當前連線和hop-by-hop協議請求欄位列表的控制選項

Connection: close

Content-Disposition告訴客戶端彈出一個檔案下載框,並且可以指定下載檔名

Content-Disposition: attachment; filename="fname.ext"

Content-Encoding設定資料使用的編碼型別

Content-Encoding: gzip

Content-Language為封閉內容設定自然語言或者目標使用者語言

Content-Language: en

Content-Length響應體的位元組長度

Content-Length: 348

Content-Location設定返回資料的另一個位置

Content-Location: /index.htm

Content-MD5設定基於MD5演算法對響應體內容進行Base64二進位制編碼

Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==

Content-Range標識響應體內容屬於完整訊息體中的那一部分

Content-Range: bytes 21010-47021/47022

Content-Type設定響應體的MIME型別

Content-Type: text/html; charset=utf-8

Date設定訊息傳送的日期和時間

Date: Tue, 15 Nov 1994 08:12:31 GMT

ETag特定版本資源的識別符號,通常是訊息摘要

ETag: "737060cd8c284d8af7ad3082f209582d"

Expires設定響應體的過期時間

Expires: Thu, 01 Dec 1994 16:00:00 GMT

Last-Modified設定請求物件最後一次的修改日期

Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT

Link設定與其他資源的型別關係

Link: </feed>; rel="alternate"

Location在重定向中或者建立新資源時使用

Location:http://www.w3.org/pub/WWW/People.html

P3P以P3P:CP="your_compact_policy"的格式設定支援P3P(Platform for Privacy Preferences Project)策略,大部分瀏覽器沒有完全支援P3P策略,許多站點設定假的策略內容欺騙支援P3P策略的瀏覽器以獲取第三方cookie的授權

P3P: CP="This is not a P3P policy! Seehttp://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657for more info."

Pragma設定特殊實現欄位,可能會對請求響應鏈有多種影響

Pragma: no-cache

Proxy-Authenticate設定訪問代理的請求許可權

Proxy-Authenticate: Basic

Public-Key-Pins設定站點的授權TLS證書

Public-Key-Pins: max-age=2592000; pin-sha256="E9CZ9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g=";

Refresh"重定向或者新資源建立時使用,在頁面的頭部有個擴充套件可以實現相似的功能,並且大部分瀏覽器都支援
<meta http-equiv="refresh" content="5; url=http://example.com/">

Refresh: 5; url=http://www.w3.org/pub/WWW/People.html

Retry-After如果實體暫時不可用,可以設定這個值讓客戶端重試,可以使用時間段(單位是秒)或者HTTP時間

Example 1: Retry-After: 120
Example 2: Retry-After: Fri, 07 Nov 2014 23:59:59 GMT

Server伺服器名稱

Server: Apache/2.4.1 (Unix)

Set-Cookie設定HTTP Cookie

Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1

Status設定HTTP響應狀態

Status: 200 OK

Strict-Transport-Security一種HSTS策略通知HTTP客戶端快取HTTPS策略多長時間以及是否應用到子域

Strict-Transport-Security: max-age=16070400; includeSubDomains

Trailer標識給定的header欄位將展示在後續的chunked編碼的訊息中

Trailer: Max-Forwards

Transfer-Encoding設定傳輸實體的編碼格式,目前支援的格式: chunked, compress, deflate, gzip, identity

Transfer-Encoding: chunked

TSVTracking Status Value,在響應中設定給DNT(do-not-track),可能的取值

   "!" — under construction

   "?" — dynamic

   "G" — gateway to multiple parties

   "N" — not tracking

   "T" — tracking

   "C" — tracking with consent

   "P" — tracking only if consented

   "D" — disregarding DNT

   "U" — updated

TSV: ?

Upgrade請求客戶端升級協議

Upgrade: HTTP/2.0, HTTPS/1.3, IRC/6.9, RTA/x11, websocket

Vary通知下級代理如何匹配未來的請求頭已讓其決定快取的響應是否可用而不是重新從源主機請求新的

Example 1: Vary: *
Example 2: Vary: Accept-Language

Via通知客戶端代理,通過其要傳送什麼響應

Via: 1.0 fred, 1.1 example.com (Apache/1.1)

Warning實體可能會發生的問題的通用警告

Warning: 199 Miscellaneous warning

WWW-Authenticate標識訪問請求實體的身份驗證方案

WWW-Authenticate: Basic

X-Frame-Options點選劫持保護:

   deny frame中不渲染

   sameorigin 如果源不匹配不渲染

   allow-from 允許指定位置訪問

   allowall 不標準,允許任意位置訪問

X-Frame-Options: deny

常用非標準響應頭欄位


X-XSS-Protection過濾跨站指令碼

X-XSS-Protection: 1; mode=block

Content-Security-Policy, X-Content-Security-Policy,X-WebKit-CSP定義內容安全策略

X-WebKit-CSP: default-src 'self'

X-Content-Type-Options唯一的取值是"",阻止IE在響應中嗅探定義的內容格式以外的其他MIME格式

X-Content-Type-Options: nosniff

X-Powered-By指定支援web應用的技術

X-Powered-By: PHP/5.4.0

X-UA-Compatible推薦首選的渲染引擎來展示內容,通常向後相容,也用於啟用IE中內嵌chrome框架外掛
<meta http-equiv="X-UA-Compatible" content="chrome=1" />

X-UA-Compatible: IE=EmulateIE7
X-UA-Compatible: IE=edge
X-UA-Compatible: Chrome=1

X-Content-Duration提供音視訊的持續時間,單位是秒,只有Gecko核心瀏覽器支援

X-Content-Duration: 42.666

Upgrade-Insecure-Requests標識伺服器是否可以處理HTTPS協議

Upgrade-Insecure-Requests: 1

X-Request-ID,X-Correlation-ID標識一個客戶端和服務端的請求

X-Request-ID: f058ebd6-02f7-4d3f-942e-904344e8cde5