2009-12-22 16 views
5

Tengo algunos sitios. Cada sitio es una versión localizada que sirve contenido específico para un determinado conjunto de configuraciones regionales. También hay un sitio mundial o "global". Los tengo la configuración de la siguiente manera:Precedencia del dominio de cookies?

Estoy tratando de realizar un seguimiento de la actividad en cada aplicación mediante una cookie. El nombre de la cookie para cada sitio es el mismo y usa la configuración predeterminada para el dominio (es decir, en .net no estoy especificando un valor para httpCookie.Domain; lo dejo por defecto).

Todo funciona bien cuando visito mis sitios "locales específicos", pero una vez que visito el sitio "global", parece que la cookie de este sitio se usa cuando regreso a visitar mis sitios "locales específicos" , en lugar de la cookie emitida para el sitio "específico de la localidad".

¿Alguna idea sobre cómo lograr que mi cookie "global" tenga prioridad sobre mi cookie "específica local" en los sitios "específicos de la configuración regional"?

+2

Más allá de la idea obvia de convertir su sitio global en "www.midominio.com"? – JustLoren

Respuesta

8

En la mayoría de los navegadores, establecer una cookie sin un 'dominio' lo hace solo válido en el nombre de host actual. Esto no se puede lograr estableciendo ningún valor en 'dominio'; si este comportamiento es el que desea, debe omitir el parámetro 'dominio'.

Sin embargo, en IE, cualquier cookie que configure sin un 'dominio' obtendrá un 'dominio' implícito del nombre de host actual. Esto significa que si configura una cookie en 'ejemplo.com' no puede detener el envío a 'sub.ejemplo.com'.

Por lo tanto, no puede tener subdominios que no comparten parte del contexto de seguridad del dominio principal. Si desea mantener un subdominio separado de su padre, debe (como lo sugirió JustLoren) crear el sitio principal www.example.com y no solo example.com.

Cuando dos cookies con dominios diferentes son válidas, los navegadores normalmente las enviarán a ambas, por lo que puede esperar un document.cookie como 'a=b; a=c'. Si su capa de lectura de cookies no espera múltiples cookies con el mismo nombre, una de ellas desaparecerá (no tendrá control sobre cuál).

El otro enfoque, si no te importa establecer límites entre los otros sitios y el principal, sería simplemente utilizar diferentes nombres de cookies en los diferentes subsitios.

+0

Esta fue la razón por la cual no hice que la mía fuera una respuesta.La tuya fue mucho más informativa :) – JustLoren

+0

Después de publicarla, hice algunas lecturas y encontré descripciones similares del problema y las soluciones. Lo que me va a funcionar es el último enfoque: "El otro enfoque, si no te importa establecer límites entre los otros sitios y el principal, sería simplemente utilizar diferentes nombres de cookies en los diferentes subsitios". Simplemente crearé un nombre de cookie ligeramente diferente por sitio y la capa que entiende cómo leerlos, podrá distinguir entre los diferentes nombres. – Brian

0

bobince tiene razón sobre el comportamiento inusual de Internet Explorer. Tenga en cuenta que Edge funciona de manera diferente, más parecido a FireFox (para este aspecto).

Si no configura ninguna propiedad de cookie, es probable que tenga problemas con la ruta. En su caso, la propiedad path=/ sería una buena opción.

Tenga en cuenta que existen muchas diferencias entre los navegadores en la forma en que manejan las cookies. Si está interesado, puede leer How Different Browsers Handle Cookies Differently

Cuestiones relacionadas