4

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

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

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'},对吗?res.writeHead那么我可以在我的节点应用程序文件中删除一行吗?我知道有些浏览器仍然不支持 HTML5,但如果可行,那么我想让我的代码只适用于 HTML5/CSS3。

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

1) 即使那里的某些内容崩溃并且看起来很糟糕,仍然会发布它

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

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

谢谢。

4

2 回答 2

6

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

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

如果你需要证明,这里是 GitHub 上的一个页面,它HTML 代码,但提供的是非 HTML content-type。如您所见,浏览器将其显示为纯文本。

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

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

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

于 2013-06-08T20:44:43.160 回答
2

但是,在 HTML5 中,您不需要编写标题 {'Content-Type':'text/html'},对吗?

错误的。每个返回一些内容的 HTTP 响应都需要指定内容的 Content-Type。

于 2013-06-08T20:39:40.707 回答