Express.JS:将cookie附加到静态服务的内容

Ran*_*lue 3 javascript node.js express

我使用Express.JS来提供静态内容:

express.use(express.static('./../'));
Run Code Online (Sandbox Code Playgroud)

何时index.html送达,我想在响应旁发送一个cookie,表明用户是否已登录.通常应该使用res.cookie()但我无法看到如何将它用于静态服务的内容.

nim*_*odm 7

不确定为什么需要这样做,但您可以在static模块之前放置自己的中间件.

以下快速入侵应该有效:

function attach_cookie(url, cookie, value) {
  return function(req, res, next) {
    if (req.url == url) {
      res.cookie(cookie, value);
    }
    next();
  }
}

app.configure(function(){
  app.use(attach_cookie('/index.html', 'mycookie', 'value'));
  app.use(express.static(path.join(__dirname, 'public')));
});
Run Code Online (Sandbox Code Playgroud)

以上在中间件之前插入static中间件链中的另一个功能用于中间件.如果URL与您要查找的特定URL匹配,则新层会将cookie附加到响应中 - 并将响应进一步传递到链中.