Node JS 响应的正确内容类型
我是否有理由不将所有内容都以二进制形式发送?我对正确的 http 有点天真,但它似乎适用于一切。以这种方式工作我会遇到哪些陷阱?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我是否有理由不将所有内容都以二进制形式发送?我对正确的 http 有点天真,但它似乎适用于一切。以这种方式工作我会遇到哪些陷阱?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
如果您将样式表作为内容类型二进制发送,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
If you send a stylesheet as Content Type binary, IE9 won't render it. It refuses to render any stylesheet that isn't text/css. That's probably enough to keep people from not visiting your site with IE9.
Not to mention the other benefits like the browser handling specific content types differently based on user preferences.
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
Edit
Here, you can use this, it will make it easier to determine the content type. The module will have two methods. getExt and getContentType. If you pass the extension to getContentType it will return the Content-Type for that file. I'm not the one that compiled all the content types, unfortunately I forgot where I found it...
https://gist.github.com/976610
如果您指定正确的内容类型,请求该文件的应用程序/浏览器可以正确处理它。
例如,如果您正在下载 pdf 文件,浏览器知道如何处理内容类型“application/pdf”,并将打开直接在浏览器中打开文件,如果它不知道类型,它只会要求您下载该文件
浏览器还允许您指定可以从中打开特定类型文件的特定程序,例如,如果您下载torrent 文件,您可以告诉您的浏览器打开它使用 uTorrent,下次下载 torrent 文件时,也将直接使用 uTorrent 打开。
在 Node.js 中,您可以执行以下操作来获取文件的内容类型:
If you specify the right content-type, the application/browser requesting the file can handle it properly
For example, if You're downloading a pdf file, the browser knows how to handle the content type "application/pdf" and will open the file directly in the browser, if it doesn't know the type, it will just ask you to download the file
Browser also let you specify a specific program from which you can open a specific type of file, for example, if you download a torrent file, you can tell your browser to open it with uTorrent, and the next time a torrent file is downloaded it will be also opened with uTorrent directly
In Node.js, you can get the content type of a file doing the following: