趣谈HTTP协议中的那些MIME header
HTTP協議是我們最常使用到的協議,我們通過瀏覽器上網,下載文件,上傳數據很多都是使用的它,但是我以前對它還是懵懵懂懂的,逐漸地,我有些感悟了,所以就記載到這里。本文將盡量使用詼諧的筆法介紹HTTP中的那些mime header field 頭域。
場景一:使用wget來下載一個源碼包,比如ATS 5.3版本,使用下面的命令:
wget -d "http://mirror.bit.edu.cn/apache/trafficserver/trafficserver-5.3.0.tar.bz2"
我們重點看response header部分:
HTTP/1.1 告訴我們使用的是HTTP協議的1.1版本,現在HTTP/2已經出來了,但是我們見到的還不多;
200 OK 告訴我們響應的狀態碼是200,就是正常返回數據了,其它還有很多響應碼,比如2xx,3xx,4xx,5xx等等,不細說了;
Server告訴我們服務器軟件是Nginx,版本是1.1.9,現在最新版的已經到1.8.x了;
Content-Type告訴我們響應的數據類型,這里是C++源碼,當然是application/octet-stream了,其它還有圖片,視頻,json,html,xml之類的;
Content-Length告訴我們response body的長度,也就是源碼包的字節大小;
Date 告訴我們從服務器獲取該源碼包的時間,和我目前的時間差8小時,估計是時區設置的問題;
Last-Modified 告訴我們,這個ATS 5.3的源碼包放到服務器上的時間,剛好是其對外發布時間;
Connection:告訴我們,C/S直接的連接保持方式,這里的keep-alive表示是保活的,沒有立即斷開,如果還有其它請求,可以重用這里TCP連接;
Accept-Ranges告訴我們從需要的字節開始接收;
由此可見,這些response header都是很有參考意義的,能給我們提供豐富的信息。
場景二:使用curl通過ATS 5.3下載一個普通的網頁文件,使用下面的命令:
curl -o /dev/null -vx 127.0.0.1:8081 ?-H "Accept-Encoding: gzip,deflate,sdch" "http://news.sohu.com"
相同的頭在這里不再重復了。
Vary告訴我們,對Accept-Encoding頭的不同值要區分,來得到不同的document副本,比如gzip壓縮的,deflate壓縮的,沒有壓縮的,這些都是不同的副本;
Cache-Control告訴我們緩存規則,這里是不要對document做變換,document的最大存活期是120秒,從緩存獲得該文件開始計算,超過120s要向服務器再次驗證;
Expires告訴我們,到那個指定的時刻,這個document就是過期的,必須向源站重新請求;
Content-Encoding告訴我們,該document是使用gzip壓縮的;
Age告訴我們,文檔的存活期,剛獲取的文檔,存活期是0;
Proxy-Connection告訴我們,curl和Proxy的網絡連接是?;畹?#xff1b;
Via告訴我們,請求從源站到達客戶端所經過的代理情況,這里只經過了一個代理ATS 5.3,注意后面的緩存情況[cMsSfW]表明是回源獲取的;
X-RS,FSS-Cache是源站自定義頭,不做表述。
將上述請求再重復幾次,我們得到
我們看到了幾點差異:
Age值有變化,原來是0,現在是8,表明該document在ATS的緩存中存活了8秒,它最大存活期是120秒,對一個新聞門戶網站來說,這是合理的,120秒后必須刷新網頁內容;
Via頭中緩存狀態有變化,現在是[cRs f ],表示是從ATS中的RAM中獲取的熱點內容;
場景三:range請求和檢查服務器是否支持斷點續傳功能
curl命令行中的-r/--range選項支持向服務器發送Range請求,-i選項指定顯示響應頭信息
注意返回狀態碼是206,
Accept-Ranges告訴我們服務器是否支持指定范圍請求及哪種類型的分段請求,這里是byte
Content-Range告訴我們在整個返回體中本部分的字節位置,因為我們請求的是圖片的前10個字節,所以Content-Range的值是bytes 0-9/1575,后面的1575是圖片總的字節數。
上面是curl獲取到的響應頭信息,其中如果能夠找到Content-Range則表明服務器支持斷點續傳,有些服務器還會返回Accept-Ranges。Nginx服務器默認支持斷點續傳的,無須做任何額外配置。
總結
以上是生活随笔為你收集整理的趣谈HTTP协议中的那些MIME header的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ATS自定义日志中的各字段解读
- 下一篇: 在CentOS 6.3 64bit上安装