$ http不会在请求中发送cookie

时间:2013-06-12 11:52:54

标签: html5 angularjs webkit xmlhttprequest

我们正在使用AngularJS和Java Servlets开发RESTful Web服务。 当用户登录时,我们的后端会向前端发送“Set-Cookie”标头。在Angular中,我们通过$cookies(ngCookie - module)访问标题并进行设置。 enter image description here

现在用户已登录,他可以删除一些内容。因此,前端向后端发送GET请求。因为我们在不同的域上工作,所以我们需要设置一些CORS Headers,Angular会在实际的GET请求之前执行OPTIONS请求:

OPTIONS请求: OPTIONS request

获取请求 GET request

我们通过$ http模块在Angular中执行此操作,但它不会发送包含JSESSIONID的Cookie。

如何启用Angular发送Cookie?

2 个答案:

答案 0 :(得分:132)

在您的配置中,DI $httpProvider然后将withCredentials设置为true:

.config(function ($httpProvider) {
    $httpProvider.defaults.withCredentials = true;
    //rest of route code
})

有关angularjs withCredentials的信息:http://docs.angularjs.org/api/ng.$http

指向mozilla文章的链接:https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS?redirectlocale=en-US&redirectslug=HTTP_access_control#section_5

答案 1 :(得分:11)

$http.get("URL", { withCredentials: true })
  .success(function(data, status, headers, config) {})
  .error(function(data, status, headers, config) {});

要记住的另一件事是:您需要启用第三方Cookie 。如果您在Chrome中全局禁用该功能,请点击域名左侧的" i" -Symbol,然后点击Cookie,然后点击"阻止"并取消阻止目标域。