我是node的新手.js我不明白标题是如何工作的。我正在尝试在我的索引中附加到我的项目花哨框.html但它不起作用。我正在使用 c9.io 工作区,所以它看起来像那样<script src="http://space.......c9.io/jquery.fancybox-1.3.4.js"></script>
我在控制台中仍然收到相同的错误:套接字io资源解释为脚本,但使用MIME类型文本/纯文本传输:
拜托,有没有人可以尽可能简单地解释我?
我的 js 文件
var http = require("http"),
express = require('express'),
app = express(),
server = app.listen(process.env.PORT),
io = require('socket.io').listen(server)
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.sockets.on('connection', function (socket) {
});
我认为您的问题的解决方案是您应该添加到脚本标签中的一点type="text/javascript"
,但这里是 mimetype 的低调:
下面是一些关于在使用原始 Nodejs 时设置标头的文本。
使用Express时也是如此。
这是维基百科上的模仿类型。
我不是专家,但据我了解,从服务器发送到客户端(主要是浏览器)的每个文件或信息都带有此 mimetype,基本上告诉浏览器如何处理文件/卡盘。您的浏览器足够智能,可以正确处理该文件,即使他没有收到任何标头+他足够聪明,可以通知您其他浏览器可能没有那么聪明。
我是这样写的:
app.get('/',function(request,response){
response.set('Content-Type', 'text/html'); // 'text/html' => mime type
response.sendfile(__dirname + 'index.html')
}
这里列出了许多哑剧类型。但我认为你可以谷歌一些类似"{文件扩展名} mime type"的东西,谷歌会为你服务得很好。
或者,您可以使用这个小包将response.set('Content-Type', 'text/html')
更改为response.set('Content-Type', mime.lookup(x));
- x 是一个字符串,例如 'kuku.mpeg',mime 将返回 currect mimetype。我用它来解析有许多子文件夹的插件,每个子文件夹都有不同的文件类型。
标头是包含有关 HTTP 请求或响应信息的字段。它可以帮助服务器或客户端确定如何处理数据,无论是接受什么类型的数据,请求或响应应该有多大,请求的来源,缓存数据与否等。
在HTTP中,MIME标头告诉客户端或服务器将发送或接收的数据类型。您收到的错误消息可能意味着浏览器认为它将接收 MIME 类型 text/javascript
但收到了text/plain
。
Resource interpreted as script but transferred with MIME type text/plain
若要解决此问题,请在发送脚本文件时指定内容类型:
app.get('/script.js', function(req, res) {
res.set('Content-Type', 'text/javascript');
res.sendfile('./script.js');
});
请注意,HTTP 标头并非特定于 Node.js,而是 HTTP 协议的一部分。