Javascript Node.js CORS会话cookie与Angular.js

Javascript Node.js CORS会话cookie与Angular.js,javascript,node.js,angularjs,cors,Javascript,Node.js,Angularjs,Cors,我正在使用Node.js和CORS和Angular.js进行简单的登录 也就是说--client.example.com正在发布tooapi.example.com/login,成功后,会话cookie也会返回client.example.com,并且也可以访问受会话cookie保护的GET服务,如api.example.com/secret 生成不受会话cookie保护的GET请求不是问题 最终,这里的目标也是——即用户名和密码——即使上述约定不可能实现 我在任何地方都找不到可以学习的实用工具

我正在使用Node.js和CORS和Angular.js进行简单的登录

也就是说--
client.example.com
正在发布too
api.example.com/login
,成功后,会话cookie也会返回
client.example.com
,并且也可以访问受会话cookie保护的GET服务,如
api.example.com/secret

生成不受会话cookie保护的GET请求不是问题

最终,这里的目标也是——即用户名和密码——即使上述约定不可能实现

我在任何地方都找不到可以学习的实用工具——给我指明正确的方向


奖励:展示一个工作示例。

您的问题很简单,浏览器不允许将一个域中设置的cookie发送到另一个域。
这是为了安全。如果您的会话cookie可以从任何域访问,那么任何站点都可以执行csrf(根据定义,您要做的是csrf-从不同站点中的一个站点使用会话)

有很多方法可以解决这个问题,不过在应用它们时你应该小心

  • 最简单的方法是使用Jsonp登录并发出跨域请求,Jsonp基本上打破了Cookie跨域策略。

  • 您可以在
    api.example.com
    中的
    client.example.com
    页面中嵌入一个iFrame,父级和iFrame可以使用进行通信


这两种方法都对csrf请求开放(就其本质而言),因此您应该特别小心允许
client.example.com
访问哪些信息。

只有将cookie的域设置为.example.com时,这才可能。你不能从api.example.com为client.example.com设置cookie:@alexwen如果我想接受来自任何域的cookie,比如---
client.example1.com
&
client.example2.com
。这里的目标是使用CORS和本地stradegy来验证客户端应用程序和REST api,即
用户名
密码