2011-09-08 15 views
40

Tengo una aplicación ASP.net que utiliza una cookie para almacenar el idioma seleccionado por el usuario. Todo funciona bien excepto cuando estoy en localhost. Reemplazar localhost por 127.0.0.1 hace que funcione de nuevo ... ¿por qué?Cookie Chrome localhost no configurada

Vi restricciones previstas para el archivo: // pero en realidad no puedo encontrar ninguna referencia a la restricción prevista para localhost.

Lo que realmente no puedo entender es por qué la sesión ASP.net (ASP.NET_SessionId) y las cookies de autenticación de formularios ASP.net (.FSAUTHSSO) están configuradas correctamente para el dominio localhost, pero mis cookies no ... ¡¿por qué?!

ya Googled mucho y nada funciona:

  • Ajuste de los Chrome bandera de línea de comandos --enable-file-galletas [QUÉ NO TRABAJO]
  • Ajuste de la cookie para HttpOnly [NO MATERIA]
  • Cambio de caducidad para la sesión o en una fecha ... [NO IMPORTA]
  • Cambiar el recorrido de la galleta de la raíz (/) o para cualquier otra cosa [no importa]

Entonces, ¿qué importa? :)

¿Y por qué se pueden establecer las cookies de ASP.net y las mías no? ¿Cual es la diferencia?

Última cosa solo mencionar que esto también ocurre en IE, pero funciona bien en FF.

Gracias!

Alex

+0

¿Cuál es la configuración de las cookies en 'Opciones-> Bajo el capó-> Privacidad-> Configuración de contenido'? ¿O tienes alguna de las excepciones que se están aplicando a localhost? –

+0

No he tocado la configuración de Google Chrome. El que está preguntando está configurado a: Cookies: permite establecer los datos locales (recomendado). Tampoco tengo excepciones establecidas ... no toqué ninguna de las configuraciones predeterminadas ... – AlexCode

+3

4 años después, el año es 2015 y todavía [es un problema] (http://stackoverflow.com/questions/ 28583729/chrome-doesnt-set-cookie-from-response). – Gaui

Respuesta

24

Las cookies están diseñadas para el segundo nivel y hacia abajo. Los dominios de primer nivel no funcionarán. En su lugar debe utilizar la dirección http://127.0.0.1 (como usted ha mencionado) o se puede editar el archivo HOSTS para asignar una dirección URL diferente con un TLD a la dirección 127.0.0.1, tales como:

yoursite.tld 127.0.0.1 

Sólo investigado más a fondo; encontró esta respuesta: Cookies on localhost with explicit domain

+5

Sí, este es el tipo de "solución" que he encontrado en todas partes, pero todavía no explica por qué otras cookies funcionan, como las ASP.net que menciono. – AlexCode

+0

Los de ASP.NET son "cookies de sesión". Chrome almacena cookies de "sesión" para localhost, pero no cookies "permanentes". Para establecer una cookie de "sesión", simplemente NO establezca una fecha de caducidad en la cookie (ni la configure explícitamente en DateTime.MinValue). En realidad, se supone que las cookies de sesión se eliminan cada vez que se cierra el navegador, pero Chrome/Firefox tiene características como "continuar donde lo dejé" o "abrir mis pestañas de la última vez" que hacen que el navegador cuelgue indefinidamente cookies de "sesión". en lugar de eliminarlos Agujero de seguridad, lol. – Triynko

1

Acabo de tener el mismo problema en Chrome. Tenía cookie.Secure = cierto. Deshacerse de eso para el servidor local me arregló el problema.

(tenía el mismo problema exacto, Fwiw: trabajado en FF, no IE o Chrome)

19

favor tratar de poner cookie.Domain = null en el servidor local y utilizar el nombre de dominio de otro modo.

+0

Esto me sirvió para ejecutar localhost. Estaba luchando con otros parámetros pero tu sugerencia funciona. ¡Gracias! – elvin

0

Existe un issue on Chromium open since 2011, que si establece explícitamente el dominio como 'localhost', debe establecerlo como false para que funcione o use establecer el dominio como 127.0.0.1.

1

tuve un problema en el cromo en los que no se estaba estableciendo una galleta con una caducidad de 2 semanas en el futuro - esto pasó a ser la cookie de autenticación (.AspNet.ApplicationCookie) así que continuamente me redireccionaban a la página de inicio de sesión.Este problema no ocurrió en otros navegadores que probé.

acabé experimentando con cookies personalizadas para determinar que el cromo pensaban que la fecha actual era anterior de lo que realmente era - así por ejemplo que puse en una cookie que expiró en 1 año hoy (2-Abr-2017) y En realidad, Chrome estableció esta cookie para que expire el 1 de enero de 2017. Esto explicaría por qué una cookie con una caducidad de 2 semanas ya se consideró caducada, ya que Chrome estaba cortando 3 meses de la expiración real y, por lo tanto, consideró que ya expiró.

El reinicio de Chrome no solucionó esto: reinicié la PC en esta etapa y esto 'corrigió' el error. También debo tener en cuenta que esto solo ocurrió en localhost - al parecer, cualquier otro sitio estaba bien.

+0

Gracias depuré esto por 2 horas tratando de reducir el tamaño de la cookie y algunas otras cosas, pero reiniciar la computadora resolvió el problema. – Peter

1

Sé que esto podría ser una tontería, pero me pasó a mí donde tomé una aplicación asp.net mvc donde no pude hacer que trabajaran localmente. Finalmente, otro desarrollador señaló una entrada en el archivo web.config que se había agregado recientemente.

<httpCookies httpOnlyCookies="true" requireSSL="true" /> 

Configuración del requireSSL a "falso" localmente. Recuerde aplicar las transformaciones a través de los entornos. Espero que esto ayude.

+0

Exacto mismo problema para mí, pero encontré esto después de resolver :) – endo64

Cuestiones relacionadas