作者tonytonyjan (南洋大兜蟲)
看板Web_Design
標題Re: [問題] MIME 疑惑請教
時間Fri Sep 28 02:24:42 2012
(失眠……Orz 上來殺時間)
建議你可以試著查一下 rfc2616
基本上 HTTP response 由 4 個部份組成:
1. Status-Line
2. Headers
3. An empty line
4. An optional message body
而在 headers 部份定義的其中一個 field "Content-Type",
就像是副檔名功能而已,用來描述 empty line 之後的那一串東西是什麼。
如果你知道為什麼你把 txt 檔案的副檔名 "txt" 拿掉或是改成其他副檔名如 .haha、
.jpg 等卻仍可用 notepad 打開來看,那麼也應該比較容易理解 Content-Type 的意義。
電腦上的檔案之所以有副檔名只是提示電腦知道要用什麼程式去執行,
所以「檔案」在工程師的眼裡,就是一串數字,副檔名只是輔助用。
HTTP 協定也是,你的瀏覽器會針對 Content-Type 定義的檔案類別去判斷 message body
裡頭的整串資料到底是什麼東西。
如果是 text/html,瀏覽器就當一般網頁顯示,如果是 application/octet-stream,
則會直接下載下來,這是為什麼有些人會問說他明明放了一個 ooxx.html,
打開瀏覽器卻會下載,那是因為 server 告訴瀏覽器這串 meesage body 裡的資料
是二進制數據,導致瀏覽器會做下載的處理而非 render ooxx.html。
image/png 和 image/jpeg 也是一樣的道理,
這同時也可以說明為什麼有些 .jpg 結尾的網址可以直接瀏覽,有些只能下載再打開。
所以 Content-Type 就和你檔案的副檔名一樣重要,
瀏覽器依據此來決定怎麼處理從 server 得到的資料。
另外想瞭解 MIME 支持哪些編碼,請留意 Content-Transfer-Encoding 這個 field。
最後還是建議查 rfc2616 比較清楚
補充:
你可以利用瀏覽器的開發工具去查 http log(Chrome 的還滿清楚的),
甚至可以用 wireshark 去分析,很有幫助。
附上網址:
http://goo.gl/ETR4V
※ 引述《jubei (X-Files AXN 七月開播!)》之銘言:
: 請教前輩關於 MIME 的一些觀念
: 一般(大部分)的網頁 MIME 類型都是 Content-Type: text/html
: 代表此網頁的內容型別是 text/html
: 而圖片型別有 image/jpeg, image/png
: JavaScript、CSS 也都有各自的 MIME 型別
: 不瞭解的地方是:
: 定義 text/html 的網頁裡面也包含了許多 jpeg, png, JavaScript, CSS
: 那麼 text/html 這個型別不就可以通用各種網頁了嗎?
: 如果是的話,那麼 image/jpeg, image/png 這類型別會用在哪些網頁呢?
: 不是很清楚 MIME 型別定義的真正用途
: 謝謝大家
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.5.35
※ 編輯: tonytonyjan 來自: 140.113.5.35 (09/28 02:52)
推 kewang:推薦這篇文章 09/28 12:48
推 gpmm:push 09/29 14:02