javascript - read - No se puede acceder a las cookies de document.cookie en JS, pero el navegador muestra que existen cookies
leer cookie javascript (5)
No puedo acceder a ninguna cookie desde JavaScript. Necesito leer algún valor y enviarlos a través de JSON para mis controles personalizados.
Intenté acceder a las cookies de JS, como se describió en:
Como puede ver en el código, al siguiente se ve tan claro como un cristal:
var c_value = document.cookie;
Cuando intento acceder al valor de document.cookie
desde el depurador web de Chrome, solo veo la cadena vacía en las expresiones Watch :
Entonces no puedo leer el valor de las cookies, que necesito.
Revisé el nombre de la cookie, que estoy enviando para obtener un valor asociado ES correcto. Además, estoy usando el código fuente de W3Schools para obtener cookies, si está interesado (pero desde el segundo enlace, la técnica es similar).
¿Cómo puedo solucionar mi problema?
¡Gracias!
Lo más probable es que se httponly
cookies de httponly
. httponly
es una bandera que puede establecer en las cookies, lo que significa que JavaScript no puede acceder a ellas. Esto es para evitar que las secuencias de comandos maliciosas roban cookies con datos confidenciales o incluso sesiones enteras.
Entonces, o tiene que deshabilitar el indicador httponly
o necesita encontrar otra forma de obtener los datos en su javascript.
Al mirar su código, debería ser fácil desactivar el indicador de solo http:
Response.AddHeader("Set-Cookie", "CookieName=CookieValue; path=/;");
Response.SetCookie(new HttpCookie("session-id") { Value = Guid.NewGuid().ToString(), HttpOnly = false });
Response.SetCookie(new HttpCookie("user-name") { Value = data.Login, HttpOnly = false });
Ahora debería poder acceder a la información de cookies desde JavaScript. Sin embargo, no sé exactamente qué tipo de datos está tratando de obtener, así que tal vez pueda elegir otro enfoque y, por ejemplo, renderizar algún atributo de datos en la página con la información que necesita en lugar de tratar de leer la cookie:
<div id="example" data-info="whatever data you are trying to retrieve"></div>
console.log(document.getElementById(''example'').getAttribute(''data-info''));
Si está utilizando alguna autenticación segura, entonces ese caso no podría acceder a las cookies directamente debido a la seguridad. tienes que cambiar algún atributo de respuesta en el lado del servidor usando el código siguiente.
Response.AddHeader ("Set-Cookie", "CookieName = CookieValue; path = /;"); Response.SetCookie (nueva HttpCookie ("session-id") {Value = Guid.NewGuid (). ToString (), HttpOnly = false}); Response.SetCookie (new HttpCookie ("nombre de usuario") {Value = data.Login, HttpOnly = false});
Pero no debe hacerlo, ya que puede cambiar de seguro a no seguro, por lo que debe buscar una solución que se haga en el servidor para eliminar las cookies y permitirle realizar algunas operaciones.
Es posible hacer cambios en el lado del servidor.
Si su cookie está configurada como Set-Cookie
o Set-Cookie2
, no forma parte de la colección de encabezados de respuesta: http://www.w3.org/TR/XMLHttpRequest/#the-getallresponseheaders%28%29-method
Devuelve todos los encabezados de la respuesta, con la excepción de aquellos cuyo nombre de campo es Set-Cookie o Set-Cookie2.
Yo diría que http es el primer culpable, pero esto también puede ocurrir al no establecer el alcance de su cookie.
Si el sitio ha sido redirigido desde otro dominio, deberá buscar establecer el alcance de la cookie. Dominio y ruta definen el alcance de la cookie, a qué URL debe enviarse la cookie. Dependiendo de esto, es posible que no vea la cookie en su respuesta.
Me encontré con este problema al configurar una cookie en un inicio de sesión exitoso de SSO de SAML y no pude recuperar la cookie del documento porque nunca se envió como parte de la solicitud.
también preste atención al atributo Ruta de la cookie, ya que la cookie solo es visible para los subdirectorios en Ruta. Tuve tu problema y lo solucioné configurando Path "/"