Angular:使用http请求设置cookie

时间:2017-03-13 12:38:02

标签: angularjs

有没有办法用初始http请求设置cookie?

意思是,我想调用一个url并同时设置cookie。不知道怎么回事?感谢您

更新:我不是跨域,而是新标签中的子域。

1 个答案:

答案 0 :(得分:1)

Cookie会在请求离开时随HTTP请求一起飞行。因此,必须在HTTP请求之前设置cookie,因此浏览器可以打包它们。

如果您只想在请求之前设置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。

如果这不是您想要的,请在此处发表评论,我会尝试更新它。