Estoy utilizando la seguridad de la primavera con angular 6. Cuando i Sesión con el servidor de autenticación básica envía una cookie JessionID con la respuesta. Quiero enviar esta cookie con otra solicitud de autenticación propósito pero me da error Refused to set unsafe header 'Cookie'
. Cuando golpeo el mismo punto final del cartero con la misma cookie en el encabezado funciona.
A continuación se muestra el método en el angular:
Nota : Actualmente estoy añadiendo manualmente con cabeceras.
private heroesUrl = 'http://localhost:8080/hi';
header = new HttpHeaders().set("Cookie", "JSESSIONID=A2A75EC9A3E1172D60060C6E708549B5");
getMessage() :Observable<Message>{
return this.http.get<Message>(this.heroesUrl,{headers:this.header});
}
Respuesta, que tengo cuando inicia sesión usando autenticación básica
No se puede hacer esto , causa que el navegador no permite que lo haga. Permítaseme describir el problema aquí:
¿Se dio cuenta el Set-Cookie: JSESSIONID=......; Path=/; HttpOnly
en sus cabeceras de respuesta? Bueno, el problema es la HttpOnly bandera. En realidad :) No es un problema, es una función para evitar ataques que tienen como objetivo robar cookies de su navegador:
HttpOnly es un indicador agregado a las cookies que le indican al navegador que no muestre la cookie a través de scripts del lado del cliente (document.cookie y otros). ... Cuando se establece una cookie con la bandera HttpOnly, se informa al navegador que esta cookie especial debe ser accesible únicamente por el servidor
Por lo que el navegador no permite ningún código javascript para acceder a esta variable. Si pudiera cambiar ese valor, entonces no es una HttpOnly
cookie de Marcados más :)
Si desea enviar esta cookie a través de JavaScript, debe enviarlo a través de la Authorization
cabecera, por ejemplo, y el middleware de escritura en el servidor Java para que capture estos valores de la Authorization
cabecera y pensar en ellos como JSESSIONID galleta. No hay más opciones para ti :)