在 typescript / angular2 环境和后端的 nodejs 中设置持久会话时遇到问题

Posted

技术标签:

【中文标题】在 typescript / angular2 环境和后端的 nodejs 中设置持久会话时遇到问题【英文标题】:Having trouble setting persisting session in a typescript / angular2 environment and nodejs in the backend 【发布时间】:2017-05-14 07:42:32 【问题描述】:

我在前端使用 typescript / angular2,在后端使用 nodejs

我相信后端本身实际上没有问题。我相信问题出在前端。

angular2 组件中,我使用 '@angular/http' 创建了以下客户端。

this.http
    .post(this.url, to_send)
    .map((res) => this.handleResponse(res) );

登录请求在服务器上收到,我通过

修复了会话变量
 req.session.cookie.something = "something";

但是,当我在相同或不同组件中再次调用服务器时:

this.http
    .post(this.url, ANOTHER_CALL)
    .map((res) => this.handleResponse(res) );

会话在服务器端不存在(没有“东西”。会话不是持久的)。

我的问题是:来自@angular/http 的this.http 会自动处理前端的会话/cookie吗?我错过了什么?

我真的相信问题不在于后端,因为我以前用 nodejs 设计过类似的系统,但如果有人认为这可能是因为这适用于他们,我会尝试发布。然而,再一次,我真的相信问题一定出在这儿。

【问题讨论】:

请有人帮忙。我真的需要这个,但我不知道为什么会这样...... 我不知道你的 Node 代码在做什么,但你至少可以调查一下:打开浏览器开发工具,然后转到网络面板。应该有 cookie 的响应是否真的有 Set-Cookie 标头?后续请求是否有 cookie 标头? cookie 是否包含它应该包含的内容? @JBNizet 我在我们的项目中也面临着类似的问题。我在 chrome 网络面板中进行了检查,发现 Set-cookie 标头被返回以响应我的登录请求。登录后,我重定向到另一个页面,并在发出任何新请求时从该页面重定向,cookie 标头不包含在请求标头中。我希望浏览器会自动添加 cookie 标头。我应该做些什么来确保后续请求将传递 cookie 标头吗? 这是此链接中的正确解决方案吗? ***.com/questions/40286920/… @rineez 检查答案 【参考方案1】:

解决方案是在请求选项中使用xhr.withCredentials = true

【讨论】:

这是@rineez 在设置 withcredentials=true 后,由于 CORS,我还遇到了另一个问题,此解决方案已解决此问题:***.com/questions/33483675/…

以上是关于在 typescript / angular2 环境和后端的 nodejs 中设置持久会话时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

Typescript - 如何在 Angular2 中正确使用 jsPDF?

如何在 Angular2 Typescript 中返回多个值

渲染所有组件后,如何在 Angular2 中运行 TypeScript 代码?

如何在ASP.NET 5上搭建基于TypeScript的Angular2项目

typescript Angular2在兄弟组件之间进行通信

typescript Angular2在兄弟组件之间进行通信