我拼命想让会话cookie在我的环境中工作,但到目前为止没有运气。
我的后端是一个节点/快速应用程序,在端口3000上运行.CORS启用如下:
const corsOptions = {
origin: "http://127.0.0.1:4300",
allowedHeaders: [ "Origin", "X-Requested-With", "Content-Type", "Accept", "Authorization", "x-xsrf-token" ],
credentials: true
};
if (isDebug) {
corsOptions.maxAge = 1;
}
app.use(cors(corsOptions));
我使用快递和护照登录。会话配置如下:
const options = {
secret: '...',
cookie: { httpOnly: true }
};
app.use(session(options));
前端是一个Angular 2 SPA,在4300端口运行。当我从我的快递服务器提供服务时,一切都按预期工作。但是,如果没有,我会遇到以下难以理解的问题:
登录路由返回带有会话ID的cookie。但是后端的下一个请求是使用不同的会话ID发送的?!我不知道,这个不同的会话ID可能来自哪里。特别是因为会话cookie被标记为仅HTTP。
HTTP请求按如下方式发送:
const response = this.http.get(url, { withCredentials: true });
我尝试了以下内容:
是否有人知道这个难题的哪个部分缺失?
非常感谢, 史蒂芬
答案 0 :(得分:2)
Omg,我缩小了它,最后发现了问题:
不的登录请求设置了withCredentials-Flag ...我认为只有在收到cookie之后才需要这些后续请求。但实际上它存储的是跨域接收的cookie。