我使用带有CORS和Angular.js的Node.js进行简单登录。
那是--- client.example.com
正在进行 POST api.example.com/login
成功时,会话cookie也会被client.example.com
返回并且也可以获得访问权限获取服务,例如api.example.com/secret
受会话Cookie保护。
制作不受会话cookie保护的GET请求不是问题。
最终,这里的目标也是authenticate a client side app to a REST api using CORS with a local stradegy ---即用户名&密码---即使上述惯例是不可能的。
我无法找到可以从任何地方学习的工作实践---指出我正确的方向?
加分: 展示一个有效的例子。
答案 0 :(得分:2)
您的问题非常简单,浏览器不允许将在一个域中设置的Cookie发送到其他域 这是为了安全。如果你的会话cookie可以从任何域访问,那么任何站点都可以执行csrf(根据定义,你想要做的是csrf - 使用来自不同站点的一个站点的会话)。
虽然在应用它们时应该小心,但还是有很多方法。
最简单的方法是使用Jsonp登录并发出跨域请求,jsonp基本上打破了cookie跨域策略。
您可以在位于client.example.com
的{{1}}页面中嵌入iFrame,父级和iFrame可以使用post message进行通信。
这两种方式都对csrf请求开放(就其性质而言),因此您应该特别注意允许api.example.com
访问哪些信息。