HTTP協議-MIME類型

  每個 URL 都表明着一個資源對象,而當咱們請求一個網頁的時候,看似只請求了一個 URI(統一資源標識符),實際上這個網頁可能包含多個 URI,例如圖片資源的 URI 和視頻資源的 URI 等。此時有些瀏覽器爲了加快訪問速度,可能會同時開多個線程去請求 URI。也就是說其實每個 URI 都發送了一個請求報文。html

  URI 包括 URL(統一資源定位符)和 URN(統一資源名)。但因爲 URN 多還在實驗階段,實驗的並非太普遍,因此如今幾乎全部的 URI 都是 URL。web

  而當咱們的瀏覽器要顯示或處理這些資源的時候,咱們並不知道其響應的數據是什麼類型的,爲了區分這些資源類型,就須要用到 MIME 了。HTTP 會爲每個經過 web 傳輸的對象添加上 MIME 類型的數據格式標籤。瀏覽器在讀取到對應的信息後,會調用相應的程序去處理它,任何獲得咱們想要的結果。瀏覽器

  MIME 類型在請求報文和響應報文中均有體現。例如,當我請求 http://www.cnblogs.com/scolia 這個 URL 時,服務器

  個人請求報文頭中有:app

  Accept 表示我當前的瀏覽器但願接受什麼類型的文件,這是請求首部,當服務器沒有客戶端想要的資源的媒體類型時,會返回406 Not Acceptable 響應。固然使用了 */* 表示願意接受任意類型的資源,因此應不會看到這個響應。另外,這裏的 q 表示權重,權重在 0-1 之間,能夠理解成客戶端在這些給出的類型中,想優先接受什麼類型,能夠服務器就能夠根據客戶端的須要返回相應的資源。ide

  若是沒有,則默認爲 1 。這裏前面幾個類型都沒有標明,則默認都是 1 ,表示優先這些類型,後面的 0.9 表示前面都沒有就用這個,最後的 0.8 表示若是都沒有,那麼任意的類型都行。工具

  而在響應報文頭中有:ui

  這裏很而且的表示我響應的是 text/html 類型的文件,瀏覽器在檢測到 MIME 類型後,就會相應的去解析它。線程

  可是,我說過看似請求的一個 URL 實際上包含了多個 URL ,若是你用工具查看,我這裏用的是火狐的控制檯,能夠看到我此次的請求有:視頻

  很是多個,咱們看一下背景圖片的 MIME 類型是什麼:

  


  MIME 類型有很是多種,通常常見的有:

  text/html:HTML 格式的文本文檔

  text/plain:普通的 ASCII 文本文檔

  image/jpeg:JPEG格式的圖片

  image/gif:GIF格式的圖片

  video/quicktime:Apple 的 QuickTime 電影

  application/vnd.ms-powerpoint:微軟的powerpoint文件

  ……

  相似的含義不少,能夠參考:戳這裏

相關文章
相關標籤/搜索