A operação de cookies entre domínios parece ser um problema simples, porque você só precisa especificar o atributo Domínio como o nome de domínio raiz do site especificado. No entanto, o autor encontrou alguns problemas durante o uso real, que são realmente dignos de nota
.
Cookie no nome de domínio principal www Crie-o e escreva o atributo Domínio, como: (Para conveniência de depuração, os códigos a seguir são todos códigos asp)
Write.asp
código do programa
<%
Response.Cookies(CookieName)("NomeUsuário") = "SunBird"
Response.Cookies(CookieName)("Senha") = "xyz1234"
Response.Cookies(CookieName).Domain = "xxxx.com"
%>
Read.asp
para leitura de cookies é colocado no mesmo diretório.
código do programa
<%
Response.Write Request.Cookies(CookieName)("Nome de usuário")
Response.Write Request.Cookies(CookieName)("Senha")
%>
Em seguida, coloque um documento Read.asp em outro site de subdomínio, com o mesmo código acima. Finalmente, criamos outro Clear.asp para limpar os cookies e colocá-lo sob o nome de domínio principal
Clear.asp
código do programa
<%
Response.Cookies(CookieName)("NomeUsuário") = ""
Response.Cookies(CookieName)("Senha") = ""
Response.Cookies(CookieName).Domain = "xxxx.com"
%>
Agora você pode testá-lo por meio da seguinte sequência de execução, Write.asp-->Read.asp do nome de domínio principal-->Read.asp do nome do subdomínio. Qualquer página Read.asp pode ler o valor do cookie criado por. Write.asp. Em seguida, execute Clear.asp para limpá-lo, está tudo bem, http://bizhi.downcodes.com/ parece não ter problemas.
Mas existem problemas ao aplicar este método a sites reais.
Descrição do problema:
Tudo está bem ao fazer login pela primeira vez. Qualquer nome de subdomínio pode acessar os cookies armazenados no nome de domínio principal. No entanto, após o logout, os cookies do nome do subdomínio são apagados, mas os cookies do nome de domínio principal. o nome de domínio ainda é mantido. O nome de domínio principal é apagado à força. Depois de definir o cookie, não importa como você faz login no nome de domínio principal, o cookie não pode ser salvo a menos que você feche o navegador e o abra novamente.
Depois de muitas tentativas, descobri acidentalmente o problema. A seguir está o processo de teste.
Crie uma página Write2.asp e coloque-a sob o nome de domínio principal
código do programa
<%
Response.Cookies(CookieName)("TEST_COOKIE") = "TEST_COOKIE"
%>
Passo 1: Após fechar o navegador, execute na seguinte ordem: Write.asp-->Read.asp do nome de domínio principal-->Read.asp do nome do subdomínio aqui. Qualquer Read.asp aqui lê normalmente.
Etapa 2: Clear.asp-->Read.asp do nome de domínio principal-->Read.asp do nome do subdomínio A operação de limpeza é bem-sucedida aqui.
Etapa 3: Write.asp -> Write2.asp -> Nome de domínio principal Read.asp -> Nome do subdomínio Read.asp Neste ponto, ambos Read.asp podem ler o valor do cookie.
Etapa 4: Execute novamente a etapa 2 e descubra que o nome de domínio principal Read.asp ainda gera o valor, enquanto o valor de Read.asp no nome do subdomínio foi apagado.
Com base no teste acima, resumimos os seguintes pontos aos quais você precisa prestar atenção ao usar cookies entre domínios:
1. Quando você tem um grupo de cookies (ou dicionário de cookies) e usa o atributo Domínio para especificar o nome do domínio, quando você modificar ou adicionar novos membros ao grupo Ao adicionar, certifique-se de adicionar o atributo Resonse.Cookies(CookieName).Domain após a operação.
2. Se não for necessário, não modifique o grupo de cookies do domínio configurado. Use diretamente Response.Cookies("CookieText") = CookieValue para criar um novo cookie.