2011-05-17 71 views
2

是否有一個原因,我不應該發送我的內容類型爲二進制的一切?我對於正確的http有點幼稚,但它似乎適用於所有事情。我會以這種方式運作的陷阱有哪些?節點JS正確的內容類型的迴應

回答

4

如果你發送一個樣式表的內容類型二進制,IE9將不對其進行渲染。它拒絕呈現任何不是text/css的樣式表。這可能足以阻止人們不使用IE9訪問您的網站。

更不用說像瀏覽器根據用戶偏好處理特定內容類型的其他好處。

http://blogs.msdn.com/b/ieinternals/archive/2011/03/27/http-406-not-acceptable-php-ie9-standards-mode-accepts-only-text_2f00_css-for-stylesheets.aspx

編輯 在這裏,你可以利用這一點,它會更容易確定的內容類型。該模塊將有兩種方法。 getExt和getContentType。如果您將擴展名傳遞給getContentType,它將返回該文件的Content-Type。我不是編譯所有的內容類型的人,可惜我忘了,我發現它...

https://gist.github.com/976610

+1

https://github.com/creationix/simple-mime – Prospero 2011-05-17 20:38:10

+0

是的,像他在他的檔案中所述,借用並從誰知道的地方抓取:P – Robert 2011-05-17 20:40:21

+0

沒有問題。只是想提供鏈接=)什麼是一個很好的默認設置爲MIME類型? – Prospero 2011-05-17 21:14:37

2

如果指定了正確的內容類型,應用/瀏覽器請求的文件能夠處理得當

例如,如果您正在下載一個PDF文件,瀏覽器知道如何處理的內容類型「應用程序/ pdf「,並將直接在瀏覽器中打開文件,如果它不知道類型,它只會要求你下載文件

瀏覽器還讓你指定一個特定的程序,你可以打開一個例如,如果您下載一個torrent文件,您可以告訴您的瀏覽器使用uTorrent打開它,並且下次下載torrent文件時,它也將直接用uTorrent打開

在Node.js的,你可以得到一個文件的內容類型執行以下操作:

type = require('mime').lookup(path); 
+0

節點似乎沒有有一個MIME的lib – Prospero 2011-05-17 20:36:22

+0

只使用節點包管理器) - > npm安裝mime – BFil 2011-05-18 07:11:18

相關問題