节点连接静态设置内容类型文本/纯文本不起作用

问题描述 投票:0回答:2

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

有什么简单的方法可以做到这一点吗?也许在连接哑剧实例之前就搞砸了?或者我必须重写连接静态中间件吗?

node.js node.js-connect
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);

0
投票

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

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

这就是你的中间件不起作用的原因。

© www.soinside.com 2019 - 2024. All rights reserved.