Saltar al contenido

Pasar cookies en Response.Redirect en ASP.NET

Nuestros investigadores estrellas han agotado sus reservas de café, por su búsqueda todo el tiempo por la resolución, hasta que Guadalupe halló el arreglo en GitLab así que en este momento la compartimos contigo.

Solución:

Los navegadores solo envían cookies a páginas en el mismo dominio que la página que configuró la cookie.

Así que si vas a la página http://localhost/login.aspx y el servidor luego procede a configurar una cookie y redirigir a (por ejemplo) http://mymachinename/default.aspxla cookie no se enviará desde el navegador al servidor al solicitar la segunda url porque no está en el mismo dominio.

Para recuperar la cookie, tendría que redirigir a http://localhost/default.aspx o tendría que empezar yendo originalmente a http://mymachinename/login.aspx.

Según el mecanismo de gestión de estado HTTP

Los servidores de origen PUEDEN enviar un encabezado de respuesta Set-Cookie con cualquier
respuesta. Los agentes de usuario PUEDEN ignorar los encabezados de Set-Cookie contenidos en
respuestas con códigos de estado de 100 niveles pero DEBEN procesar Set-Cookie
encabezados contenidos en otras respuestas (incluidas las respuestas con 400-
y códigos de estado de 500 niveles). Un servidor de origen puede incluir múltiples
Establecer campos de encabezado de cookies en una sola respuesta. la presencia de un
Cookie o un campo de encabezado Set-Cookie no excluye los cachés HTTP
almacenar y reutilizar una respuesta.

Por lo tanto, los REDIRECT (3xx) están en las ‘otras’ respuestas, por lo que el navegador debe procesarlos, que luego puede eliminarlos por todo tipo de razones. Una de las causas por las que el navegador rechaza la cookie es cuando la dominio attribute de la cookie se especifica y no tiene suficientes puntos (como ‘localhost’) o cuando la ruta attribute de la cookie no coincide con mayúsculas y minúsculas con la ruta real en la URL (la ruta de la cookie distingue entre mayúsculas y minúsculas).

Me he enfrentado al mismo problema en una aplicación web .NET Core 2.1. Después de buscar un rato, descubrí que podía usar lo siguiente para forzar que una cookie no se pierda en una respuesta de redireccionamiento.

HttpContext.Response.Cookies.Append("cookie-name", "cookie-value", new CookieOptions  IsEssential = true );

Los documentos mencionan que esta propiedad “indica si esta cookie es esencial para que la aplicación funcione correctamente. Si true entonces se pueden omitir las comprobaciones de la política de consentimiento. El valor predeterminado es false.”

¡Esta podría ser una opción para ti!

Te invitamos a añadir valor a nuestro contenido informacional participando con tu experiencia en las ilustraciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *