因此,我尝试做的是在domain.com
上设置一个Cookie,该Cookie可用于所有子域 *.domain.com
。我目前正在使用Express 4.x和NodeJS。
目前我可以在我的案例中设置并获取主域上的任何Cookie,通过lvh.me:3000
在本地环境中进行测试(允许本地子域名)
这基本上就是我的Express.js应用程序的样子:
// Require all files (express,http,express-session,cookie-parser...)
var api = express()
// Cookie Parser
api.use(cookieParser());
api.use(session({
secret: 'yoursecret',
cookie: {
path: '/',
domain: '.lvh.me:3000',
maxAge: 1000 * 60 * 24, // 24 hours
},
resave: true,
saveUninitialized: true
}));
// CORS
api.use(function(req, res, next) {
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Origin', req.headers.origin);
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept');
next()
})
// View Engine
api.set('views', './api/views');
api.set('view engine', 'ejs');
api.disable('x-powered-by');
// Stylus
function compile(str, path) {
return stylus(str).set('filename', path);
}
api.use(stylus.middleware({
src: './app',
compile: compile
}));
// Serving Static Content
api.use(express.static('./app'));
// All Routes
require('../api/routes/test.server.routes.js')(api);
// Router
api.get('*', function(req, res) {
//res.cookie('remember', 1, { domain : "lvh.me:3000" });
res.render('index'); // Get all requests to Index. Angular takes over routing.
});
// Return Application
return api;
Cookie是通过Cookie解析器res.cookie('user', 'bobby');
设置的,这似乎可以转到lvh.me:3000/anything
,但boddy.lvh:3000/anything
Cookie是空的。
我在这里遗漏了什么,我认为所有子域名都可以使用Cookies吗?我已经阅读了Stack Overflow上的一些文章/帖子,但它们似乎都已经过时了。非常感谢任何指导或帮助。
另一方面,如果我在快递文件中设置了cookie,它将在整个应用程序中可用。例如:
// Router
api.get('*', function(req, res) {
res.cookie('user', 'jim'); // This can be accessed
res.render('index');
// Get all requests to Index. Angular takes over routing.
});
有什么理由? - 这在很大程度上是因为它被设置在任何/每个视图上。所以它仍然留给我原来的问题。
答案 0 :(得分:0)
在您的域名mydomain.com
设置Cookie时,子域无法访问该域名。你必须把前导点(例如.mydomain.com
)。在这种情况下,cookie将在子域之间共享