de
cookies entre dominios parece ser un problema simple, porque solo necesita especificar el atributo Dominio como el nombre de dominio raíz del sitio web especificado.
Sin embargo, el autor encontró algunos problemas durante el uso real, lo que de hecho vale la pena señalar.
Cookie en el nombre de dominio principal www Créela y escriba el atributo de Dominio, como por ejemplo: (Para facilitar la depuración, los siguientes códigos son todos códigos ASP)
Código:
Write.asp
<%
Response.Cookies(NombreDeCookie)("Nombre De Usuario") = "SunBird"
Response.Cookies(NombreDeCookie)("Contraseña") = "xyz1234"
Respuesta.Cookies(NombreCookie).Dominio = "xxxx.com"
%>
código
Read.asppara leer cookies se coloca en el mismo directorio
:Read.asp
<%
Respuesta.Solicitud de escritura.Cookies(Nombre de cookie)("Nombre de usuario")
Respuesta.Solicitud de escritura.Cookies(Nombre de la cookie)("Contraseña")
%>
Luego coloque un archivo Read.asp en otro sitio de subdominio, con el mismo código que el anterior.
Finalmente, creamos otro Clear.asp para borrar las cookies y lo colocamos bajo el nombre de dominio principal
Código:
Clear.asp
<%.
Response.Cookies(NombreDeCookie)("Nombre De Usuario") = ""
Response.Cookies(NombreDeCookie)("Contraseña") = ""
Respuesta.Cookies(NombreCookie).Dominio = "xxxx.com"
%>
Ahora puede probarlo mediante la siguiente secuencia de ejecución, Write.asp-->Read.asp del nombre de dominio principal-->Read.asp del nombre de subdominio. Todas las páginas Read.asp pueden leer el valor de la cookie creada por. Write.asp y luego ejecute Clear.asp nuevamente para borrarlo, todo está bien y parece que no hay ningún problema.
Pero existen problemas al aplicar este método a sitios reales.
Descripción del problema:
Todo está bien al iniciar sesión por primera vez. Todos los nombres de subdominio pueden acceder a las cookies almacenadas en el nombre de dominio principal. Sin embargo, una vez que cierra la sesión, las cookies de los nombres de subdominio se borran, pero las cookies del nombre de dominio principal sí. aún se conservan después de borrar por la fuerza las cookies del nombre de dominio principal, no importa cómo inicie sesión en el nombre de dominio principal, las cookies no se pueden guardar a menos que cierre el navegador y lo vuelva a abrir.
Después de muchos intentos, descubrí accidentalmente el problema. El siguiente es el proceso de prueba.
Cree una página Write2.asp y colóquela bajo el nombre de dominio principal
<%
Response.Cookies(NombreCookie)("TEST_COOKIE") = "TEST_COOKIE"
%>
Paso 1: Después de cerrar el navegador, ejecute en el siguiente orden: Write.asp-->Read.asp del nombre de dominio principal-->Read.asp del nombre de subdominio Aquí todo Read.asp se lee normalmente.
Paso 2: Clear.asp-->Read.asp del nombre de dominio principal-->Read.asp del nombre de subdominio La operación de limpieza se realiza correctamente aquí.
Paso 3: Write.asp --> Write2.asp --> Nombre de dominio principal Read.asp --> Nombre de subdominio Read.asp En este punto, ambos Read.asp pueden leer el valor de la cookie.
Paso 4: Vuelva a ejecutar el paso 2 y descubra que el nombre de dominio principal Read.asp todavía genera el valor, mientras que el valor de Read.asp bajo el nombre del subdominio se ha borrado.
Con base en la prueba anterior, resumimos los siguientes puntos a los que debe prestar atención al usar cookies en todos los dominios:
1. Cuando tiene un grupo de cookies (o diccionario de cookies) y usa el atributo Dominio para especificar el nombre de dominio, cuando modificar o agregar nuevos miembros al grupo Al agregar, asegúrese de agregar el atributo Resonse.Cookies(CookieName).Domain después de la operación.
2. Si no es necesario, no modifique el grupo de cookies para el que se configuró el dominio y utilice directamente Response.Cookies("CookieText") = CookieValue para crear una nueva cookie.