套接字 io 资源中的标头被解释为脚本,但使用 MIME 类型传输 文本/纯文本:.



我是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 请求或响应信息的字段。它可以帮助服务器或客户端确定如何处理数据,无论是接受什么类型的数据,请求或响应应该有多大,请求的来源,缓存数据与否等。

在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 协议的一部分。

相关内容

最新更新