$ http no envía cookies en las solicitudes

Estamos trabajando en un servicio web RESTful con AngularJS y Java Servlets. Cuando el usuario inicia sesión, nuestro servidor envía un encabezado “Set-Cookie” al frontend. En Angular accedemos al encabezado a través de $cookies (ngCookie – module) y lo configuramos. enter image description here

Ahora que el usuario está conectado, puede, por ejemplo, eliminar algunas cosas. Por lo tanto, la interfaz envía una solicitud GET al back-end. Debido a que trabajamos en diferentes dominios, necesitamos configurar algunos CORS Headers y Angular hace una solicitud OPTIONS antes de la solicitud GET real:

Solicitud OPCIONES: Solicitud OPCIONES

Solicitud GET Solicitud GET

Hacemos esto en Angular mediante el módulo $ http, pero simplemente no enviaremos la cookie, que contiene JSESSIONID .

¿Cómo puedo habilitar a Angular para que envíe cookies?

En su configuración, DI $httpProvider y luego configure withCredentials en true:

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

Información sobre angularjs withCredentials: http://docs.angularjs.org/api/ng.$http

Qué enlaces al artículo de 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) {}); 

Otra cosa a tener en cuenta: debe tener habilitadas las cookies de terceros . Si lo tiene deshabilitado globalmente en Chrome, haga clic en el símbolo “i” a la izquierda del nombre de dominio, luego en las cookies, luego “bloqueado” y desbloquee el dominio de destino.