javascript - 当我处理 HTML5 时,我是否必须在 node.js 中包含 res.writeHead?

标签 javascript html node.js css browser

我已经开始学习 HTML5/CSS3/JavaScript/Node.js 并且没有使用 HTML4 的经验,更不用说 Web 应用程序了。所以这可能是一个愚蠢的问题,但无论如何我在网上寻找时无法看到答案,因为我在网上和书籍上阅读的所有示例都假定是用 HTML4 编写的,所以我'我现在在这里。

在 Node.js 中,当您向客户端发送响应 header 时,您将编写以下示例代码:

var http = require('http');
http.createServer(function(req, res){
    res.writeHead(200, {'Content-Type':'text/html'});
    res.write(some_data);
    res.end();
});

但是,在 HTML5 中,您不需要编写 header {'Content-Type':'text/html'},对吧?那么我可以在我的 Node 应用程序文件中删除一行 res.writeHead 吗?我知道有些浏览器仍然不支持 HTML5,但如果可行,那么我想让我的代码仅适用于 HTML5/CSS3。

此外,当我完成创建并发布 Web 应用程序时,在应对仍然不支持 HTML5/CSS3 的浏览器(例如,旧版 IE)时,我应该走哪条路。

1)即使有些内容崩溃,看起来很糟糕,仍然发布它

2) 出于安全的考虑,完全屏蔽使用该浏览器的用户,并提示他们使用其他浏览器,如果可行(我不知道,但我怀疑我可以访问客户端的浏览器信息并处理相应地使用 JavaScript ......对吧?)

我不想费心让我的代码适合所有浏览器,因为我想把它作为一种爱好发布,并通过花费尽可能少的时间使用 HTML5/CSS3 构建一个好看的网站。

谢谢。

最佳答案

content-type:text/html 是浏览器将页面识别为 HTML 所必需的。 content-type 不是 HTML5(或 HTML4)规范的一部分;它是 HTTP header 的一部分;它告诉浏览器正在接收什么样的内容。

如果您提供了错误的内容类型,浏览器可能无法显示您的页面,或者可能只是将它接收到的内容显示为原始文本。内容类型是 HTTP 协议(protocol)的强制性部分。

如果您需要证明,here's a page on GitHub, which is HTML code, but which is served with a non-HTML content-type .如您所见,浏览器将其显示为纯文本。

某些 Web 服务器可能默认为 HTML 页面发送正确的 MIME 类型,这取决于服务器配置(通常这是基于服务器查看文件扩展名来确定要发送的内容类型,但这取决于服务器配置)。

但如果服务器未配置为为您的页面发送正确的 MIME 类型,那么是的,您确实需要在您的代码中自己完成。浏览器不够聪明,无法自行解决。

您还需要为您的 CSS、JS、JSON、图像文件等提供适当的 content-type header 。同样,如果这些文件作为具有公认文件扩展名的静态文件提供,那么很可能默认服务器配置会发送正确的内容类型,而您无需考虑它。但是,如果您正在编写一个动态创建这些文件的程序,那么您很可能需要在程序中正确设置内容类型,以便浏览器能够理解并正确显示它们。

关于javascript - 当我处理 HTML5 时,我是否必须在 node.js 中包含 res.writeHead?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17003590/

相关文章:

javascript - Particles.js 在 Angular 2 中创建不可点击的屏幕

javascript - HTML 5 视频到 Canvas 缩放问题

html - 如何找到 xmlns 定义?

html - 如何让这个纯 CSS 图像比较 slider 从中间开始?

node.js - 看到错误模块未找到 : 'pg-native' in heroku app

javascript - 单击按钮后的 jQuery POST 不起作用

html - 水平菜单栏

javascript - 按当前时间戳每分钟更新一次 Node.js Express api

node.js - 将多个变量传递给 package.json 脚本

javascript - Javascript ES6 类应该用作 React State 吗?