Ste*_*ven 5 cookies cross-domain session-cookies express angular
我拼命地尝试让会话cookie在我的环境中工作,但到目前为止还没有运气。
我的后端是一个节点/express 应用程序,在端口 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));
Run Code Online (Sandbox Code Playgroud)
我使用快速会话和护照进行登录。会话配置如下:
const options = {
secret: '...',
cookie: { httpOnly: true }
};
app.use(session(options));
Run Code Online (Sandbox Code Playgroud)
前端是 Angular 2 SPA,在端口 4300 上运行。当我从 Express 服务器为前端提供服务时,一切都按预期工作。但如果没有,我会遇到以下晦涩的问题:
登录路由返回带有会话 ID 的 cookie。但是到后端的下一个请求是使用不同的会话 ID 发送的?!我不知道这个不同的会话 ID 是从哪里来的。特别是因为会话 cookie 被标记为仅限 HTTP。
HTTP 请求的发送方式如下:
const response = this.http.get(url, { withCredentials: true });
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
有人知道拼图缺少哪一部分吗?
非常感谢,史蒂文
天哪,我缩小了范围,终于找到了问题所在:
登录请求没有设置withCredentials-Flag...我认为只有在收到 cookie 后,后续请求才需要这样做。但实际上它是用来存储跨域接收到的cookie的。
| 归档时间: |
|
| 查看次数: |
1745 次 |
| 最近记录: |