【问题标题】:Node JS Proper Content-Type for responsesNode JS 正确的响应内容类型
【发布时间】:2011-08-27 05:32:46
【问题描述】:

我是否有理由不将我的内容类型作为二进制文件发送给所有内容?我对正确的http有点天真,但它似乎适用于一切。以这种方式工作会遇到哪些陷阱?

【问题讨论】:

    标签: http node.js http-headers


    【解决方案1】:

    如果您将样式表作为内容类型二进制发送,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

    【讨论】:

    • 是的,就像他在文件中所说的那样,从谁知道在哪里借来的:P
    • 没有质疑。只是想提供链接 =) 为 mime 类型设置的好的默认值是什么?
    【解决方案2】:

    如果您指定正确的内容类型,请求文件的应用程序/浏览器可以正确处理它

    例如,如果您正在下载一个pdf文件,浏览器知道如何处理内容类型“application/pdf”,并会直接在浏览器中打开该文件,如果它不知道类型,它会只是要求你下载文件

    浏览器还可以让你指定一个特定的程序,你可以从中打开特定类型的文件,例如,如果你下载一个 torrent 文件,你可以告诉你的浏览器用 uTorrent 打开它,下次再打开一个 torrent 文件下载了也会直接用uTorrent打开

    在 Node.js 中,您可以通过以下方式获取文件的内容类型:

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

    【讨论】:

    • 节点似乎没有 mime 库
    • 只使用 Node Package Manager ;) -> npm install mime
    猜你喜欢
    • 2015-07-27
    • 2018-09-25
    • 2014-08-31
    • 2021-07-29
    • 1970-01-01
    • 2015-03-10
    • 2011-01-21
    • 2010-09-28
    • 2019-01-01
    相关资源
    最近更新 更多