我正在开发一个在不同域上使用API后端的AngularJS网站。
www.example.com
api.example.com
我使用Angular的$http.post
向设置cookie的API发出身份验证请求。然后,我对API进行辅助$http.get
调用,并且从POST
请求设置的cookie不会被发送回服务器。看起来cookie在某个地方迷路了。
API是一个Flask Python应用程序,我正在使用flask-cors来启用跨域调用。 Access-Control-Allow-Origin
标头设置为http://www.example.com
正在设置的Cookie中的域名为api.example.com
我已将应用程序设置为使用nginx和url重写在一个域下运行。因此,前端网站位于www.example.com
,API由www.example.com/api/
访问,Cookie正在按预期保存/使用。
我无法判断这是我的前端或API网站配置是否存在问题。
答案 0 :(得分:2)
由于您要从其他域发送http请求,因此您需要确保$http
能够发送Cookie。在您应用的配置中,添加:
$httpProvider.defaults.withCredentials = true
这将允许AngularJS将您的浏览器cookie发送到服务器。