html5 - attribute - $ http no envía cookies en las solicitudes
header html (2)
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.
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 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.