$ 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 слева от имени домена, затем куки, затем "заблокируйте" и разблокируйте целевой домен.