在Node.js中发送文件之前,如何设置MIME类型?
从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.");
}
}
问题:
(注意:我已经找到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.");
}
}
以上是 在Node.js中发送文件之前,如何设置MIME类型? 的全部内容, 来源链接: utcz.com/qa/406245.html