我正在尝试将 connect.static 提供的文件的内容类型设置为
text/plain
。我认为这会起作用,但 connect 似乎仍在使用 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);
有什么简单的方法可以做到这一点吗?也许在连接哑剧实例之前就搞砸了?或者我必须重写连接静态中间件吗?
如果您可以控制公共目录中的文件名,最简单的方法是确保它们以“.txt”结尾,以便 mime 映射为发送函数提供正确的 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);
或者,如果您确实希望每个文件都作为文本/纯文本,只需在调用静态中间件之前设置 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);
只有当静态中间件无法处理请求时,才会执行下一个中间件。
如果静态中间件找到该文件,它会将其提供给客户端。下一个中间件不会执行。
这就是你的中间件不起作用的原因。