Express 4.x将Cookie预先添加到静态内容中?

是否可以使用Express将Cookie设置为静态内容请求? 例如,我试图在发送静态内容(如index.html)之前将cookie“foo”追加到没有设置该cookie值的任何请求。

var express = require("express"); var cookieParser = require('cookie-parser'); var app = express(); app.use(cookieParser()); app.use(function(req, res, next){ if(!req.cookies || !req.cookies.foo){ res.cookie("foo", "bar"); } next(); }); app.use(express.static('public')); 

我的问题是,这个平坦不起作用。 如果我添加发送到最后,我可以设置一个cookie,但它可能需要一个专门的url调用,或者当原来的目标是“index.html”时终止响应,然后放在路由器的前面。

 app.get('/cookie',function(req, res){ res.cookie('foo' , 'bar').send('Cookie is set'); }); 

我是否需要做一些检查每个请求,设置cookie,然后设置redirect为相同的url,以获得原始缩进的请求(index.html等)?

这看起来很奇怪:

 if (!req.cookies || req.cookies.foo) 

首先, req.cookies将一直由cookie-parser定义。 如果在请求中没有传入任何cookie,它将是一个空的对象(将评估为true )。 此外,它看起来像只想设置一个cookie foo只有当它已经设置?

我想你想要这个:

 if (! req.cookies.foo) { res.cookie(...); }