趣談HTTP協議中的那些MIME header

2021-07-02 17:18:40 字數 1996 閱讀 3876

我們重點看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-length告訴我們response body的長度,也就是原始碼包的位元組大小;

date 告訴我們從伺服器獲取該原始碼包的時間,和我目前的時間差8小時,估計是時區設定的問題;

last-modified 告訴我們,這個ats 5.3的原始碼包放到伺服器上的時間,剛好是其對外發布時間;

connection:告訴我們,c/s直接的連線保持方式,這裡的keep-alive表示是保活的,沒有立即斷開,如果還有其它請求,可以重用這裡tcp連線;

accept-ranges告訴我們從需要的位元組開始接收;

由此可見,這些response header都是很有參考意義的,能給我們提供豐富的資訊。

相同的頭在這裡不再重複了。

vary告訴我們,對accept-encoding頭的不同值要區分,來得到不同的document副本,比如gzip壓縮的,deflate壓縮的,沒有壓縮的,這些都是不同的副本;

cache-control告訴我們快取規則,這裡是不要對document做變換,document的最大存活期是120秒,從快取獲得該檔案開始計算,超過120s要向伺服器再次驗證;

expires告訴我們,到那個指定的時刻,這個document就是過期的,必須向源站重新請求;

content-encoding告訴我們,該document是使用gzip壓縮的;

age告訴我們,文件的存活期,剛獲取的文件,存活期是0;

proxy-connection告訴我們,curl和proxy的網路連線是保活的;

via告訴我們,請求從源站到達客戶端所經過的**情況,這裡只經過了乙個**ats 5.3,注意後面的快取情況[cmssfw]表明是回源獲取的;

x-rs,fss-cache是源站自定義頭,不做表述。

將上述請求再重複幾次,我們得到

我們看到了幾點差異:

age值有變化,原來是0,現在是8,表明該document在ats的快取中存活了8秒,它最大存活期是120秒,對乙個新聞門戶**來說,這是合理的,120秒後必須重新整理網頁內容;

場景三: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協議的那些東西

秋招被問到http協議,我除了說是個通訊協議了就啥都不知道了,其實也就這麼點東西。好好記。http協議是超文字傳輸協議,用於從全球資訊網伺服器傳輸超文字到瀏覽器的傳輸協議。它是基於tcp ip通訊協議來傳遞資料的。http協議工作於c s 客戶端 伺服器 架構上。屬於應用層,物件導向的協議。特點 u...

HTTP協議那些事

1 http全程是hypertext transfer protocol 超文字傳輸協議 的簡寫,是tcp ip協議的乙個應用層協議,用於定義web遊覽器和web伺服器之間交換資料的過程,由請求和響應構成,是乙個標準的客戶端服務伺服器模型,乙個無狀態的協議 2 http版本 http 1.0和htt...

http協議那些事

乙個 中包含http協議,當然還有其他的協議,比如上傳檔案是採用tfp協議,還有ip位址,後期我們由於ip位址不容易被記憶,所以就出現了網域名稱,還有埠 ip位址是指某一網路中,唯一的位址 埠是指,伺服器跟伺服器之間的通訊通道 當瀏覽器輸入url的時候會發生什麼 當我們在瀏覽器位址列上輸入要訪問的u...