node.js 中的标头 - 套接字 io 资源解释为脚本,但使用 MIME 类型 text/plain 传输:
Posted
技术标签:
【中文标题】node.js 中的标头 - 套接字 io 资源解释为脚本,但使用 MIME 类型 text/plain 传输:【英文标题】:Headers in node.js - socket io Resource interpreted as Script but transferred with MIME type text/plain: 【发布时间】:2013-09-19 13:30:02 【问题描述】:我是 node.js 的新手,我不明白标头是如何工作的。我试图在我的 index.html 中附加到我的项目 fancybox,但它不起作用。我正在使用 c9.io 工作区,所以它看起来像 <script src="http://space.......c9.io/jquery.fancybox-1.3.4.js"></script>
我在控制台中仍然遇到同样的错误:socket io Resource Explained as Script but transfer with MIME type text/plain:
拜托,有没有人可以尽可能简单地解释我?
我的 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)
);
【问题讨论】:
【参考方案1】: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 协议的一部分。
【讨论】:
【参考方案2】:我认为您的问题的解决方案是一点点 type="text/javascript"
,您应该将其添加到您的脚本标签中,但这里是 mimetypes 的一个低点:
Here's some text 关于在使用原始 Nodejs 时设置标头。
和here's the same thing 使用 Express 时。
这里是mimetypes on wikipedia。
我不是专家,但据我了解,从服务器发送到客户端(主要是浏览器)的每个文件或信息卡盘都带有这种 mimetype,它基本上告诉浏览器如何处理文件/卡盘。 . 你的浏览器足够聪明,可以正确处理该文件,即使他没有收到标题 + 他足够聪明,可以通知你其他浏览器可能没有那么聪明。
我是这样写的:
app.get('/',function(request,response)
response.set('Content-Type', 'text/html'); // 'text/html' => mime type
response.sendfile(__dirname + 'index.html')
here 列出了许多 mimetype。但我认为你可以用谷歌搜索“file extension mime type”之类的东西,谷歌会很好地为你服务。
或者,您可以使用this little package 将response.set('Content-Type', 'text/html')
更改为response.set('Content-Type', mime.lookup(x));
- x 是一个字符串,例如'kuku.mpeg',mime 将返回当前的mimetype。我用它来解析有许多子文件夹的插件,每个子文件夹都有不同的文件类型。
【讨论】:
以上是关于node.js 中的标头 - 套接字 io 资源解释为脚本,但使用 MIME 类型 text/plain 传输:的主要内容,如果未能解决你的问题,请参考以下文章
Node.js + Socket.io |在服务器上设置自定义标头