有没有理由我不应该将所有内容的内容类型作为二进制发送?我对正确的http有点天真,但它似乎适用于所有内容。我会以这种方式遇到哪些陷阱?
样式表作为内容类型二进制文件发送,IE9 将不会呈现它。它拒绝呈现任何不是文本/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
如果指定了正确的内容类型,则请求文件的应用程序/浏览器可以正确处理它
例如,如果您正在下载pdf文件,浏览器知道如何处理内容类型"application/pdf",并将直接在浏览器中打开该文件,如果它不知道类型,它只会要求您下载文件
浏览器还允许您指定可以从中打开特定类型文件的特定程序,例如,如果您下载种子文件,您可以告诉您的浏览器使用 uTorrent 打开它,下次下载种子文件时,它也将直接使用 uTorrent 打开
在 Node.js 中,您可以执行以下操作获取文件的内容类型:
type = require('mime').lookup(path);