AngularJS Cookie未设置
我正在开发一个AngularJS的网站,这个网站的后台API在不同的域名上。
- 前端网站的地址是:
www.example.com
- API的地址是:
api.example.com
我使用Angular的$http.post
来向API发送一个认证请求,这个请求会设置一个cookie。然后我又用$http.get
去请求API,但之前设置的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网站配置的问题。
1 个回答
2
因为你是从另一个域名发送http请求,所以你需要确保你的 $http
能够发送cookies。在你应用的配置中,添加以下内容:
$httpProvider.defaults.withCredentials = true
这样做可以让AngularJS把你浏览器里的cookies发送到服务器。