$ http не отправляет cookie в Requests

Мы работаем над RESTful Webservice с AngularJS и Java Servlets. Когда пользователь входит в систему, наша база данных отправляет заголовок "Set-Cookie" во внешний интерфейс. В Angular мы получаем доступ к заголовку через $cookies (ngCookie-module) и устанавливаем его. enter image description here

Теперь, когда пользователь входит в систему, он может, например, удалить некоторые вещи. Поэтому внешний интерфейс отправляет запрос GET на сервер. Поскольку мы работаем в разных доменах, нам нужно установить некоторые заголовки CORS, а Angular выполняет запрос OPTIONS перед фактическим запросом GET:

Запрос OPTIONS: OPTIONS request

Запрос GET GET request

Мы делаем это в Angular через $http module, но он просто не отправит файл cookie, содержащий JSESSIONID.

Как я могу включить Angular для отправки файлов cookie?

Ответ 1

В вашей конфигурации, 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

Ответ 2

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

Еще одна вещь, о которой нужно помнить: вам нужно включить сторонние файлы cookie. Если у вас есть глобально отключенный в Chrome, нажмите "i" -Symbol слева от имени домена, затем куки, затем "заблокируйте" и разблокируйте целевой домен.