在快速会话中处理2 sid



我有一个场景

  1. 在浏览器上,我打开了一个网站,在通过系统验证后(即访问.abc.com),我会得到一个cookie,并将其设置在客户端上,即connect.sid,域为.abc.com

  2. 在同一个浏览器上,我打开了另一个webiste,即xyz.abc.com,它也生成会话cookie(在从相同的即access.abc.com获得身份验证后),名称与xyz.abc相同,但域不同(基本上这就是这个网站设置的)

现在,如果我向xyz.abc.com上的任何api发送请求,我会看到2 connect.sid正在运行。

我的问题是,当xyz.abc.com发送请求时,access.abc.com的快速会话将选择哪个cookie?

以下是access.abc.com 上的快速会话设置

var RedisStore = require('connect-redis')(expressSession);
var session = expressSession({
  key: 'connect.sid',
  store: new RedisStore({host: config.session_redis.host, 
    port: config.session_redis.port,
    ttl: 2*24*60*60 //in secs
  }),
  resave: false,
  saveUninitialized: false,
  secret: '234567',
  cookie: {
    domain: '.abc.com',
    maxAge: 2*24*60*60*1000 // in ms
  }
});

我的问题是,当xyz.abc.com发送请求时,access.abc.com的快速会话将选择哪个cookie?

查看代码,我认为它会在请求标头中遇到的第一个Cookie标头中选择一个,所以问题变成了"浏览器会先在标头中放入哪个cookie?"(我无法回答,因为我不知道)。

最新更新