在 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项目