Angular.js 的 Node.js CORS 会话 cookie
Posted
技术标签:
【中文标题】Angular.js 的 Node.js CORS 会话 cookie【英文标题】:Node.js CORS session cookie with Angular.js 【发布时间】:2013-04-16 01:37:47 【问题描述】:我正在使用带有 CORS 和 Angular.js 的 Node.js 进行简单登录。
那就是 --- client.example.com
也在进行 POST api.example.com/login
成功时也会返回会话 cookie client.example.com
并且可以通过 GET 像 api.example.com/secret
这样的服务受会话 cookie 保护。
发出不受会话 cookie 保护的 GET 请求不是问题。
最终,这里的目标也是 authenticate a client side app to a REST api using CORS with a local stradegy --- 即用户名和密码 --- 即使上面的约定是不可能的。
我在任何地方都找不到有效的学习方法 --- 为我指明正确的方向?
奖励:展示一个工作示例。
【问题讨论】:
这只有在您将 cookie 的域设置为 .example.com 时才有可能。您不能从 api.example.com 为 client.example.com 设置 cookie:***.com/questions/1062963/… @alexwen 如果我想接受来自任何域的内容,例如 ---client.example1.com
和 client.example2.com
。这里的目标是使用 CORS 和本地策略验证客户端应用程序和 REST api --- 即 username
和 password
。
【参考方案1】:
您的问题很简单,浏览器不允许将设置在一个域中的 cookie 发送到另一个域。 这是为了安全。如果您的会话 cookie 可以从任何域访问,那么任何站点都可以执行 csrf(根据定义,您想要执行 csrf - 使用来自不同站点的一个站点的会话)。
有一些方法可以绕过它,但在应用它们时应该小心。
最简单的方法是使用Jsonp登录跨域请求,jsonp基本上打破了cookies跨域策略。
您可以在位于api.example.com
的client.example.com
页面中嵌入iFrame,父级和iFrame 可以使用post message 进行通信。
这两种方式都对 csrf 请求开放(就其本质而言),因此您应该格外小心您允许 client.example.com
访问的信息。
【讨论】:
以上是关于Angular.js 的 Node.js CORS 会话 cookie的主要内容,如果未能解决你的问题,请参考以下文章
使用 Angular.js 和 Node.js 构建实时应用程序的更好方法是啥?
Node.js Angular.js Vue.js视频教程合集
Node.js、angular.js 和 MongoDB 入门、建模关系和其他提升技巧 [关闭]