我有一个节点/快速/护照后端侦听端口3001,我正在直接与浏览器进行身份验证。它可以很好地验证和控制对受保护URL的访问。前端是聚合物,用于开发的不同端口(8080)。身份验证后,快速将浏览器重定向到聚合物应用程序。问题是当聚合物应用程序然后将铁-ajax调用回到快速后端时,auth cookie / session句柄不会被传递,因此后端拒绝该请求。
在制作中,我认为后端将位于前端(users.foo.com)的不同子域(backend.foo.com)上。好奇,如果有人知道如何获得快递/护照来设置将在所有子域共享的会话cookie?
答案 0 :(得分:1)
跨站点会话和子域cookie是完全不同的事情。
要使您的会话Cookie可用于子域,您应该可以执行以下操作:
app.use(express.session({
cookie: {
path: '/',
domain: '.example.com',
}
}));
要在不同的,不相关的域中提供会话,您必须使用更复杂的机制在域之间共享数据,但即使您的问题标题表明您需要后者,您的问题内容也会询问前者所以你需要一个子域cookie。
还可以阅读有关CORS - 跨源资源共享的信息 - 并确保没有因为错误配置的CORS而被阻止,因为在这种情况下正确配置可能会非常麻烦。