我们正在使用AngularJS和Java Servlets开发RESTful Web服务。
当用户登录时,我们的后端会向前端发送“Set-Cookie”标头。在Angular中,我们通过$cookies
(ngCookie - module)访问标题并进行设置。
现在用户已登录,他可以删除一些内容。因此,前端向后端发送GET请求。因为我们在不同的域上工作,所以我们需要设置一些CORS Headers,Angular会在实际的GET请求之前执行OPTIONS请求:
OPTIONS请求:
获取请求
我们通过$ http模块在Angular中执行此操作,但它不会发送包含JSESSIONID
的Cookie。
如何启用Angular发送Cookie?
答案 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,然后点击"阻止"并取消阻止目标域。