http頭解釋

<---響應頭--->php

長鏈接:html

Connection:  keep-alive    開啓長鏈接          ----   connection [kəˈnekʃn]鏈接   keep [ki:p]保持     alive [əˈlaɪv]活着的
Keep-Alive: timeout=20    長鏈接時間    ---- timeout 超時chrome

X-Cachejson

X-Cache: 表示你的 http request 是由 proxy server 回的 .
MISS 表示proxy無緩存, HIT 表示proxy緩存了
瀏覽器

例:x-cache:MISS from fs-20   沒有用到緩存
  x-cache: HIT from fs-20  用到緩存了
緩存

Cache-Control主要有如下幾種類型:
(1) 請求Request:

[1] no-cache  ---- 不要讀取緩存中的文件,要求向WEB服務器從新請求 (這個很容易讓人產生誤解,令人誤覺得是響應不被緩存。實際上Cache-Control: no-cache是會被緩存的,只不過每次在向瀏覽器提供響應數據時,緩存都要向服務器評估緩存響應的有效性。)
[2] no-store    ---- 請求和響應都禁止被緩存  (這個纔是響應不被緩存的意思)    ---- store   [stɔ:(r)]  存儲
[2] max-age: ---- 表示當訪問此網頁後的max-age秒內再次訪問不會去服務器請求,其功能與Expires相似,只是Expires是根據某個特定日期值作比較。一但緩存者自身的時間不許確.則結果可能就是錯誤的,而max-age,顯然無此問題.。Max-age的優先級也是高於Expires的。
[3] max-stale  ---- 容許讀取過時時間必須小於max-stale 值的緩存對象。         ----max  [mæks] 最大值      stale  [steɪl] 不新鮮的;陳舊
[4] min-fresh ---- 接受其max-age生命期大於其當前時間 跟 min-fresh 值之和的緩存對象      ---- min  [mɪn] 分鐘; 最小       fresh  [freʃ]  新鮮;新的
[5] only-if-cached ---- 告知緩存者,我但願內容來自緩存,我並不關心被緩存響應,是不是新鮮的.
[6] no-transform   ---- 告知代理,不要更改媒體類型,好比jpg,被你改爲png.        ---- transform   [trænsˈfɔ:m]  變換

(2) 響應Response:

[1] public    ---- 數據內容皆被儲存起來,就連有密碼保護的網頁也儲存,安全性很低
[2] private    ---- 數據內容只能被儲存到私有的cache,僅對某個用戶有效,不能共享    ----private  [ˈpraɪvət]   私有的
[3] no-cache    ---- 能夠緩存,可是隻有在跟WEB服務器驗證了其有效後,才能返回給客戶端
[4] no-store  ---- 請求和響應都禁止被緩存
[4] max-age:   ----- 本響應包含的對象的過時時間
[5] Must-revalidate    ---- 若是緩存過時了,會再次和原來的服務器肯定是否爲最新數據,而不是和中間的proxy          ---- Must  [məst]   必須      revalidate [rɪ'vælɪdeɪt]  使從新生效
[6] max-stale  ----  容許讀取過時時間必須小於max-stale 值的緩存對象。
[7] proxy-revalidate  ---- 與Must-revalidate相似,區別在於:proxy-revalidate要排除掉用戶代理的緩存的。即其規則並不該用於用戶代理的本地緩存上。
[8] s-maxage  ---- 與max-age的惟一區別是,s-maxage僅僅應用於共享緩存.而不該用於用戶代理的本地緩存等針對單用戶的緩存. 另外,s-maxage的優先級要高於max-age.
[9] no-transform   ---- 告知代理,不要更改媒體類型,好比jpg,被你改爲png.安全

Expires     -- [iksˈpaiəz] 過時時間
性能優化

Cache-control 用於控制HTTP緩存(在HTTP/1.0中可能部分沒實現,僅僅實現了 Pragma: no-cache)
Expires 表示存在時間,容許客戶端在這個時間以前不去檢查(發請求),等同max-age的效果。可是若是同時存在,則被Cache-Control的max-age覆蓋。   ---- Expires [iksˈpaiəz]  過時時間服務器

格式:Expires    Tue, 02 Jan 2018 03:44:20 GMT網絡

Content-Encoding 是HTTP協議的響應報文頭       -----Encoding [ɪn'kəʊdɪŋ]  編碼模式

通常形式如:Content-Encoding:gzip,deflate,compress

Content-Type

MediaType,便是Internet Media Type,互聯網媒體類型;也叫作MIME類型,在Http協議消息頭中,使用Content-Type來表示具體請求中的媒體類型信息。
例如: Content-Type: text/html;charset:utf-8;

 常見的媒體格式類型以下:

        text/html : HTML格式
        text/plain :純文本格式     
        text/xml :  XML格式
        image/gif :gif圖片格式   
        image/jpeg :jpg圖片格式
        image/png:png圖片格式

   以application開頭的媒體格式類型:    ---- application [ˌæplɪˈkeɪʃn]  應用

       application/xhtml+xml :XHTML格式
       application/xml     : XML數據格式
       application/atom+xml  :Atom XML聚合格式   
       application/json    : JSON數據格式
       application/pdf       :pdf格式
       application/msword  : Word文檔格式
       application/octet-stream : 二進制流數據(如常見的文件下載)
       application/x-www-form-urlencoded : <form encType=」」>中默認的encType,form表單數據被編碼爲key/value格式發送到服務器(表單默認的提交數據的格式)

Date:Date頭域表示消息發送的時間,緩存在評估響應的新鮮度時要用到,時間的描述格式由RFC822定義。例如,Date: Thu, 11 Jul 2015 15:33:24 GMT。
Age:當代理服務器用本身緩存的實體去響應請求時,用該頭部代表該實體從產生到如今通過多長時間了。例如,Age:147 (秒)

Last-modified  文件在服務器端最後被修改的時間                  ---- Last  最後一個     modified  ['mɒdɪfaɪd] 修改日期

例如:Last-Modified:    Mon, 25 Dec 2017 05:44:15 GMT

 更新原理:
  一、在瀏覽器首次請求某個資源時,服務器端返回的狀態碼是200 (ok),內容是你請求的資源,同時有一個Last-Modified的屬性標記(Reponse Header),標識此文件在服務期端最後被修改的時間,格式:Last-Modified:Tue, 24 Feb 2009 08:01:04 GMT
  二、瀏覽器第二次請求該資源時,根據HTTP協議的規定,瀏覽器會向服務器傳送If-Modified-Since報頭(Request Header),詢問該文件是否在指定時間以後有被修改過,格式爲:If-Modified-Since:Tue, 24 Feb 2009 08:01:04 GMT
  三、若是服務器端的資源沒有變化,則服務器返回304狀態碼(Not Modified),內容爲空,這樣就節省了傳輸數據量。當服務器端代碼發生改變,則服務器返回200狀態碼(ok),內容爲請求的資源,和第一次請求資源時相似。從而保證在資源沒有修改時不向客戶端重複發出資源,也保證當服務器有變化時,客戶端可以及時獲得最新的資源。

Transfer-Encoding(傳輸編碼): chunked    ----chunked   [tʃɪŋkt]  龜裂的

表示輸出的內容長度不能肯定,普通的靜態頁面、圖片之類的基本上都用不到這個。
但動態頁面就有可能會用到,但我也注意到大部分asp,php,asp.net動態頁面輸出的時候大部分仍是使用Content-Length,沒有使用Transfer-Encoding: chunked。
不過若是結合:Content-Encoding: gzip 使用的時候,Transfer-Encoding: chunked仍是比較有用的。

Vary (標頭):Accept-Encoding           ---- Vary  [ˈveəri] 變化    accept [əkˈsept] 接受

 性能優化裏有一項叫指定「Vary:Accept-Encoding」標頭,用一句話來講明它的意義,就是「告訴代理服務器緩存兩種版本的資源:壓縮和非壓縮,這有助於避免一些公共代理不能正確地檢測Content-Encoding標頭的問題
 先來看看下面這幅圖:

 設想有兩個客戶,一個使用的舊瀏覽器不支持壓縮,一個使用新的瀏覽器支持壓縮,若是他們都請求同一個網頁,那麼取決於誰先請求,壓縮或非壓縮版本便存儲在CDN上。這樣問題就出現了,舊瀏覽器請求常規網頁但得到緩存的壓縮版本,而新瀏覽器會得到緩存的非壓縮版本但嘗試去「解壓」它。不管哪一種方式都是壞消息。解決方法是,源服務器回送「Vary: Accept-Encoding」。
      如今的中間CDN會存儲獨立的緩存條目,一個是Accept-encoding: gzip ,而若是你沒有發送header,則存儲另外一個。
      標頭「Vary:Accept-Encoding」指定方法
      如今的新瀏覽器都支持壓縮了,所以若是網站啓用了GZip,能夠無需再指定「Vary: Accept-Encoding」標頭,不過指定「Vary: Accept-Encoding」標頭會有更高的保險,而它並不須要你額外的開銷,爲何不指定呢? 

X-UA-Compatible       ----Compatible [kəmˈpætəbl]  兼容

X-UA-Compatible是自從IE8新加的一個設置,對於IE8如下的瀏覽器是不識別的。 經過在meta中設置X-UA-Compatible的值,能夠指定網頁的兼容性模式設置。
在網頁中指定的模式優先權高於服務器中(經過HTTP Header)所指定的模式。 兼容性模式設置優先級

 經常使用的例子:
<meta http-equiv="X-UA-Compatible" content="IE=7">

X-Firefox-Spdy

SPDY(讀做「SPeeDY」)是Google開發的基於TCP的傳輸層協議,用以最小化網絡延遲,提高網絡速度,優化用戶的網絡使用體驗。SPDY並非一種用於替代HTTP的協議,而是對HTTP協議的加強。新協議的功能包括數據流的多路複用、請求優先級以及HTTP報頭壓縮。谷歌表示,引入SPDY協議後,在實驗室測試中頁面加載速度比原先快64%
在UI上,沒有任何元素標明你正在使⽤http2。但想確認也並不複雜,⼀種⽅法是啓⽤「Web developer->Network」,再查看響應頭⾥⾯服務器發回來的內容。這個響應是「HTTP/2.0」,而且Firefox也插⼊了⼀個⾃⼰頭「X-Firefox-Spdy:」
例:X-Firefox-Spdy: h2      在火狐瀏覽器裏查看是否使用了http2
 

 

 <---請求頭--->

Accept 屬於請求頭

1. Accept屬於請求頭, Content-Type屬於實體頭。
Http報頭分爲通用報頭,請求報頭,響應報頭和實體報頭。
請求方的http報頭結構:通用報頭|請求報頭|實體報頭
響應方的http報頭結構:通用報頭|響應報頭|實體報頭

2. Accept表明發送端(客戶端)但願接受的數據類型
好比:Accept:text/xml;
表明客戶端但願接受的數據類型是xml類型

3. Content-Type表明發送端(客戶端|服務器)發送的實體數據的數據類型。
好比:Content-Type:text/html;
表明發送端發送的數據格式是html。

請求報頭容許客戶端向服務器端傳遞請求的附加信息以及客戶端自身的信息。
經常使用的請求報頭
Accept           ----Accept   [əkˈsept]  接收
Accept請求報頭域用於指定客戶端接受哪些類型的信息。eg:Accept:image/gif,代表客戶端但願接受GIF圖象格式的資源;Accept:text/html,代表客戶端但願接受html文本。
Accept-Charset       -----Charset    [t'ʃɑ:set]  編碼格式
Accept-Charset請求報頭域用於指定客戶端接受的字符集。eg:Accept-Charset:iso-8859-1,gb2312.若是在請求消息中沒有設置這個域,缺省是任何字符集均可以接受。
Accept-Encoding       -----Encoding  [ɪn'kəʊdɪŋ]  字符編碼
Accept-Encoding請求報頭域相似於Accept,可是它是用於指定可接受的內容編碼。eg:Accept-Encoding:gzip.deflate.若是請求消息中沒有設置這個域服務器假定客戶端對各類內容編碼均可以接受。
Accept-Language      ----Language   [ˈlæŋgwɪdʒ]   語種
Accept-Language請求報頭域相似於Accept,可是它是用於指定一種天然語言。eg:Accept-Language:zh-cn.若是請求消息中沒有設置這個報頭域,服務器假定客戶端對各類語言均可以接受。
Authorization
Authorization請求報頭域主要用於證實客戶端有權查看某個資源。當瀏覽器訪問一個頁面時,若是收到服務器的響應代碼爲401(未受權),能夠發送一個包含Authorization請求報頭域的請求,要求服務器對其進行驗證。
Host(發送請求時,該報頭域是必需的)
Host請求報頭域主要用於指定被請求資源的Internet主機和端口號,它一般從HTTP URL中提取出來的,eg:
咱們在瀏覽器中輸入:http://www.guet.edu.cn/index.html
瀏覽器發送的請求消息中,就會包含Host請求報頭域,以下:
Host:www.guet.edu.cn
此處使用缺省端口號80,若指定了端口號,則變成:Host:www.guet.edu.cn:指定端口號
User-Agent
咱們上網登錄論壇的時候,每每會看到一些歡迎信息,其中列出了你的操做系統的名稱和版本,你所使用的瀏覽器的名稱和版本,這每每讓不少人感到很神奇,實際上,服務器應用程序就是從User-Agent這個請求報頭域中獲取到這些信息。User-Agent請求報頭域容許客戶端將它的操做系統、瀏覽器和其它屬性告訴服務器。不過,這個報頭域不是必需的,若是咱們本身編寫一個瀏覽器,不使用User-Agent請求報頭域,那麼服務器端就沒法得知咱們的信息了。
請求報頭舉例:
GET /form.html HTTP/1.1 (CRLF)
Accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/* (CRLF)
Accept-Language:zh-cn (CRLF)
Accept-Encoding:gzip,deflate (CRLF)
If-Modified-Since:Wed,05 Jan 2007 11:21:25 GMT (CRLF)
If-None-Match:W/"80b1a4c018f3c41:8317" (CRLF)
User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows NT 5.0) (CRLF)
Host:www.guet.edu.cn (CRLF)
Connection:Keep-Alive (CRLF)
(CRLF)

Cookie

Cookie是用於維持服務端會話狀態的,一般由服務端寫入,在後續請求中,供服務端讀取。
格式:Cookie:_ga=GA1.2.1691816690.150002439…1668657670.1514857430; _gat=1

 Host

Host:客戶端指定本身想訪問的http服務器的域名/IP 地址和端口號。
如: Host: www.6san.com:8080
 
Pragma    ---- Pragma [p'ræɡmə]  特殊指令
 Pragma: no-cache:跟Cache-Control: no-cache相同, Pragma: no-cache兼容http 1.0Cache-Control: no-cache是http 1.1提供的。所以,Pragma: no-cache能夠應用到http 1.0 和http 1.1,而Cache-Control: no-cache只能應用於http 1.1.
 
Upgrade-Insecure-Requests         ---- Upgrade [ˌʌpˈgreɪd]  升級    Insecure  [ˌɪnsɪˈkjʊə(r)] 不安全的    Request [rɪˈkwest] 對象
若是在https的頁面須要加載http的資源,那麼瀏覽器就會報錯或者提示,爲了促進用戶升級協議,同時不須要網站開發者勞師動衆地把整個網站的http資源改爲https資源,chrome增長一個Upgrade-Insecure-Requests: 1頭,告訴服務器,瀏覽器能夠處理https協議,而後服務器返回Content-Security-Policy: upgrade-insecure-requests頭,或者經過meta頭設置, 告訴瀏覽器,對於頁面的http資源,請求時能夠自動升級到https,好比在https的網站上有一張圖片url是http://localhost/1.jpg,瀏覽器請求時會把url變成https://localhost/1.jpg,因此這裏首先須要服務器在端有相對應的資源。可是有一種狀況例外,那就是https網站中a標籤對應的外站資源不會被升級,好比a網站有一張b網站的連接,那麼這個連接對應的url不會升級
格式:Upgrade-Insecure-Requests:1
 
User-Agent    ---- Agent  [ˈeɪdʒənt]  代理
User-Agent中文名爲用戶代理,簡稱 UA,它是一個特殊字符串頭,使得服務器可以識別客戶使用的操做系統及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等。一些網站經常經過判斷 UA 來給不一樣的操做系統、不一樣的瀏覽器發送不一樣的頁面,所以可能形成某些頁面沒法在某個瀏覽器中正常顯示,但經過假裝 UA 能夠繞過檢測。
例:User-Agent:Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/57.0

If-Modified-Since       ----Since   [sɪns]  自從; 既然; 由於; 以來

格式:If-Modified-Since Mon, 25 Dec 2017 05:08:41 GMT     (304狀態下能看到這個頭)

If-Modified-Since是標準的HTTP請求頭標籤,在發送HTTP請求時,把瀏覽器端緩存頁面的最後修改時間一塊兒發到服務器去,服務器會把這個時間與服務器上實際文件的最後修改時間進行比較。若是時間一致,那麼返回HTTP狀態碼304(不返回文件內容),客戶端接到以後,就直接把本地緩存文件顯示到瀏覽器中。若是時間不一致,就返回HTTP狀態碼200和新的文件內容,客戶端接到以後,會丟棄舊文件,把新文件緩存起來,並顯示到瀏覽器中。

相關文章
相關標籤/搜索