我正在尝试将connect.static提供的文件的内容类型设置为text/plain
。我认为这样可行,但是连接似乎仍然在检测mime
模块扩展名的内容类型。
var connect = require("connect")
connect()
.use(connect.static(__dirname + "/public"))
.use(function(req, res, next) {
res.setHeader("Content-Type", "text/plain");
})
.listen(process.env.PORT);
有没有简单的方法呢?也许在连接mime的实例之前搞砸了才能到达它?或者我是否必须重写连接静态中间件?
答案 0 :(得分:2)
如果您可以控制公共目录中的文件名,最简单的方法是确保它们以“.txt”结尾,以便mime映射为send函数提供正确的Content-Type。
如果失败,您可以更改默认的mime类型:
var connect = require("connect")
var mime = connect.static.mime;
mime.default_type = mime.lookup('text');
connect()
.use(connect.static(__dirname + "/public"))
.listen(process.env.PORT);
或者,如果您确实希望每个文件都以text / plain形式提供,只需在调用静态中间件之前设置Content-Type标头即可。如果标题尚未出现在响应中,它只会添加标题:
var connect = require("connect")
connect()
.use(function(req, res, next) {
res.setHeader("Content-Type", "text/plain");
next();
})
.use(connect.static(__dirname + "/public"))
.listen(process.env.PORT);
答案 1 :(得分:0)
只有静态中间件无法处理请求,才会执行下一个中间件。
Incase静态中间件找到该文件,它将它提供给客户端。不执行下一个中间件。
这就是您的中间件无效的原因。