$http 不会在请求中发送 cookie

我们正在使用 AngularJS 和 JavaServlet 开发一个 RESTful Webservice。 当用户登录时,我们的后端向前端发送一个“ Set-Cookie”头。在角度我们通过 $cookies(ngCookie-module)访问头并设置它。 enter image description here

现在用户已经登录,他可以删除一些东西。因此,前端向后端发送一个 GET 请求。因为我们在不同的领域工作,我们需要设置一些 CORS 报头,Angular 在实际的 GET 请求之前做一个 OPTION 请求:

选择要求: OPTIONS request

申请 GET request

我们通过 $http 模块在 Angular 中做到这一点,但是它不会发送包含 JSESSIONID的 cookie。

如何启用 Angular 发送 cookie?

69347 次浏览

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

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

带证件的 angularjs 信息: 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

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

另一件需要记住的事情是: 你需要 启用第三方 cookie。如果你在 Chrome 中全局禁用了它,点击域名左边的“ i”-符号,然后 Cookie,然后“阻止”并解除阻止目标域名。