从Node.js服务器向浏览器发送脚本时,在Google Chrome浏览器中,出现以下警告:
资源被解释为脚本,但以MIME类型文本/纯文本传输
我用Google搜索了一下,发现这是服务器端的问题,也就是说,我认为在发送事物之前,我应该为事物设置正确的MIME类型。这是HTTP服务器的处理程序:
var handler = function(req, res)
{
url = convertURL(req.url); //I implemented "virtual directories", ignore this.
if (okURL(url)) //If it isn't forbidden (e.g. forbidden/passwd.txt)
{
fs.readFile (url, function(err, data)
{
if (err)
{
res.writeHead(404);
return res.end("File not found.");
}
//I think that I need something here.
res.writeHead(200);
res.end(data);
});
}
else //The user is requesting an out-of-bounds file.
{
res.writeHead(403);
return res.end("Forbidden.");
}
}
问题: 如何更正服务器端代码以正确配置MIME类型?
(注意:我已经找到https://github.com/broofa/node-mime,但是它只能让我确定MIME类型,而不是“设置”它。)
我想到了!
感谢@rdrey的链接和此节点模块,我设法正确设置了响应的MIME类型,如下所示:
function handler(req, res) {
var url = convertURL(req.url);
if (okURL(url)) {
fs.readFile(url, function(err, data) {
if (err) {
res.writeHead(404);
return res.end("File not found.");
}
res.setHeader("Content-Type", mime.lookup(url)); //Solution!
res.writeHead(200);
res.end(data);
});
} else {
res.writeHead(403);
return res.end("Forbidden.");
}
}
我已经读过这个和这个问题,它似乎建议可以在客户端使用javascript检查文件MIME类型。现在,我明白了真正的验证仍然必须在服务器端完成。我想执行客户端检查,以避免不必要的服务器资源浪费。 我说目前没有办法用javascript检查MIME类型,对吗?还是我漏掉了什么?
问题内容: 假设您要将一堆文件保存在某个地方,例如在BLOB中。假设您想通过网页分发这些文件,并让客户端自动打开正确的应用程序/查看器。 假设:浏览器通过HTTP响应中的mime-type(content-type?)标头找出要使用的应用程序/查看器。 基于此假设,除了文件的字节外,您还希望保存MIME类型。 您将如何找到文件的MIME类型?我目前在Mac上,但是在Windows上也应该可以使用。
我需要使用MIME发送POST请求- 这是我对POST标题的默认配置:
问题内容: 我有一些我无法理解的代码,我试图使用回调返回对象数组,我有一个函数返回值,然后将其压入数组,但是我无法在函数外部访问它,我在这里做一些愚蠢的事情,但无法分辨(我对Node.JS非常陌生) 问题答案: 您在这里遇到了多个问题。核心问题是要了解异步响应如何工作以及何时执行哪些代码。但是,除此之外,您还必须学习如何在循环中管理多个异步响应,以及如何知道何时完成所有响应以及如何按顺序获取结果以
我已经用这个方法在选择之前查看照片了。请注意照片。
问题内容: 我有一个Spring MVC控制器,它返回一个JSON字符串,我想将mimetype设置为application / json。我怎样才能做到这一点? 业务对象已经可以作为JSON字符串使用,因此使用不是我的解决方案。是完美的,但如何设置模仿类型? 问题答案: 我会考虑重构服务以返回您的域对象而不是JSON字符串,并让Spring处理序列化(通过编写时的)。从Spring 3.1开始,