2017-03-13 188 views
0

有没有办法使用初始http请求设置cookie?Angular:使用http请求设置Cookie

含义,我想打电话给一个网址,并在同一时间设置cookie。不知道如何去做这件事?谢谢你

更新:我没有做跨域,但在新标签中的子域。

+0

你在做跨域请求吗? – mehulmpt

+0

好点,我更新了问题 - 谢谢 – Thibs

+0

当你说初始HTTP请求,这是否意味着AngularJS框架(加载模板等)或任何用户触发操作的第一个HTTP请求?像API调用或自定义请求一样? – Dorival

回答

1

在这些请求离开的时刻,Cookie会随HTTP请求一起飞行。所以cookie必须已经在HTTP请求之前被设置,所以浏览器可以打包它们。

如果你只是想先设定一个cookie您的要求,您可以通过使用$cookies服务做到:

angular.module('cookiesExample', ['ngCookies']) 
.controller('ExampleController', ['$cookies', function($cookies) { 
    // Setting a cookie 
    $cookies.put('myFavorite', 'oatmeal'); 

    // Make your HTTP Request here // 
    // $http.get('/someUrl').then(...); 
}]); 

现在,如果你想被透明地设置这些cookie,而不需要分散$cookies无处不在,你应该写一个HTTP拦截器并在那里设置这些cookie。你可以阅读如何在这里:https://docs.angularjs.org/api/ng/service/ $ http(寻找拦截器)。

一旦你创建了一个本质上是工厂的拦截器,你可以将它连接到你的.Config阶段,如下所示:$httpProvider.interceptors.push('myHttpInterceptor');。然后,即使AngularJS框架所做的调用也会收到这个cookie。

如果这不是你想要的,在这里评论,我会尝试更新它。