gpt4 book ai didi

node.js - NodeJS cookie 不适用于 Express 4 中的 session

转载 作者:搜寻专家 更新时间:2023-10-31 22:32:23 24 4
gpt4 key购买 nike

我已经将我的 NodeJS 应用程序更新到 Express 4.0,现在除了 express-session cookie 之外,我无法设置自己的 cookie。这个问题只发生在任何 session 的第一个请求上,当用户重新加载页面时,自定义 cookie 就在那里。

var express = require('express');
var routes = require('./routes');
var http = require('http');
var path = require('path');
var session = require('express-session');

var app = express();

app.set('port', process.env.PORT || 3000);

app.use(express.static(path.join(__dirname, 'public')));
app.use(require('body-parser')());
app.use(require('method-override')());
app.use(require('cookie-parser')('cookie-secret'));
//app.use(session({ secret: 'secret', key: 'sid'})); //uncomment this to see the problem

app.get('/', function(req, res, next) {
res.cookie('testing', 'test'); //this isn't set if using 'app.use(session...)'
res.send('This is a cookie test');
});

http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});

测试:1.运行上面的代码,cookie“测试”发送到浏览器是否正确。2. 然后清除 cookie 并取消注释“app.use(session...”行。3. 运行应用程序,唯一的 cookie 是“sid”。 “测试”在哪里?4. 重新加载页面(不清除 cookie),“测试”cookie 就在那里。

我的所有 cookie 在第一次请求时都存在,这一点很重要。

最佳答案

这对我有用:

var mw = {
favicon: require('static-favicon'),
logger: require('morgan'),
bodyParser: require('body-parser'),
cookieParser: require('cookie-parser'),
session: require('express-session'),
methodOverride: require('method-override')
};

var MongoStore = require('connect-mongo')(mw);
app.store = new MongoStore(...);


app.use(function(req, res, next) {
if ('HEAD' === req.method || 'OPTIONS' === req.method) return next();
var writeHead = res.writeHead;
res.writeHead = function() {
res.cookie('XSRF-TOKEN', req.session && req.session._csrfSecret);
writeHead.apply(res, arguments);
};
next();
});

app.use(mw.session({
key: 'yourCookieID',
cookie: {
maxAge: 3600000 * 24 * 7
},
store: app.store
}));

关于node.js - NodeJS cookie 不适用于 Express 4 中的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23172873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com