javascript - Node/ExpressJS 中域及其子域的 Cookie

标签 javascript angularjs node.js cookies subdomain

所以我试图做的是在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 是空的。

我是否在这里遗漏了任何内容,我认为 Cookie 在所有子域中都可用?我读过 Stack Overflow 上的一些文章/帖子,但它们看起来都相当过时。非常感谢任何指导或帮助。

附带说明一下,如果我在 Express 文件中设置 Cookie,则该 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. 
});

有什么理由吗? - 这在很大程度上是因为它被设置在任何/每个 View 上。所以它仍然给我留下了最初的问题。

最佳答案

设置 cookie 时,如果您的域名 mydomain.com 无法被子域访问。您必须放置前导点(例如 .mydomain.com)。在这种情况下,cookie 将在子域之间共享

关于javascript - Node/ExpressJS 中域及其子域的 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35895009/

相关文章:

node.js - 通过驱动器 api 上传时,Base64 字符串 img 不可见

javascript - 表行的 AngularJS 指令中的动态 `template`

javascript - 如何防止在解析完成之前更改路由?

node.js - Mocha 测试,链接 super 测试请求

javascript - Angular 指令 ng-repeat 和范围问题

javascript - Cordova Angularjs : How to get value return from CordovaSQLite

stdin - node.js:从标准输入读取同步?

javascript - 为什么全局定义的变量是未定义的?

javascript - 窗口加载功能不起作用

javascript - 从消息中提取 OTP 并在 React Native 中仅显示 OTP 值