0

我正在尝试将 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);

有什么简单的方法可以做到这一点吗?也许在它可以到达之前在连接的mime实例中扭来扭去?还是我必须重写连接静态中间件?

4

2 回答 2

2

如果您可以控制公共目录中的文件名,最简单的方法是确保它们以“.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);
于 2013-08-01T08:02:28.807 回答
0

只有当静态中间件无法处理请求时,才会执行下一个中间件。

万一静态中间件找到该文件,它会将其提供给客户端。下一个中间件不会被执行。

这就是您的中间件无效的原因。

于 2013-08-01T07:43:36.687 回答