express cookie return未定义 [英] express cookie return undefined
问题描述
我尝试在express.js上设置cookie,但返回未定义。
我搜索了许多网页,并将 express.cookieParser()
上面的 app.use(app.router)
,但仍然无法返回正确的值。
I'm trying to set cookie on express.js but it return undefined.
I've searched many web pages and put express.cookieParser()
above app.use(app.router)
but it still can't return the right value.
app.js
app.configure(function(){
var RedisStore = require('connect-redis')(express);
app.use(express.logger());
app.set('view options', { layout: false });
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser({uploadDir: './uploads/tmp'}));
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({ secret: "william", store: new RedisStore }));
//Initialize Passport! Also use passport.session() middleware, to support
//persistent login sessions (recommended).
app.use(passport.initialize());
app.use(passport.session());
//app.router should be after passportjs
app.use(app.router);
app.use(express.compiler({ src: __dirname + '/public', enable: ['less']}));
app.use(express.static(path.join(__dirname, 'public')));
});
app.get('/', function(req, res) {
res.cookie('cart', 'test', {maxAge: 900000, httpOnly: true})
});
app.get('/test', function(req, res) {
res.send('testcookie: ' + req.cookies.cart);
});
结果:
testcookie: undefined
推荐答案
在HTTP标头中设置。 res.cookie()
只是为您的HTTP结果设置标头,但实际上不发送任何HTTP。如果你的代码在语法上是正确的,它运行,它实际上只是坐着,不返回任何东西。我还在您的代码中修复了一些语法错误: app.get()
:
Cookies are set in HTTP Headers. res.cookie()
just sets the header for your HTTP result, but doesn't actually send any HTTP. If your code was syntactically correct and it ran, it would actually just sit and not return anything. I also fixed some syntax bugs in your code in this app.get()
:
app.get('/', function(req, res) {
res.cookie('cart', 'test', {maxAge: 900000, httpOnly: true});
res.send('Check your cookies. One should be in there now');
});
这篇关于express cookie return未定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!