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, o queé
realmente digno 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)
Código:
Write.asp
<%
Response.Cookies(CookieName)("NomeUsuário") = "SunBird"
Response.Cookies(CookieName)("Senha") = "xyz1234"
Response.Cookies(CookieName).Domain = "xxxx.com"
%>
código
Read.asppara leitura de cookies é colocado no mesmo diretório
:Read.asp
<%
Response.Write Request.Cookies(CookieName)("Nome de usuário")
Response.Write Request.Cookies(CookieName)("Senha")
%>
Em seguida, coloque um arquivo Read.asp em outro site de subdomínio, com o mesmo código acima.
Por fim, criamos outro Clear.asp para limpar os cookies e colocá-lo sob o nome de domínio principal
:
Clear.asp
<%.
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. Todas as páginas Read.asp podem ler o valor do cookie criado por. Escreva.asp e execute Clear.asp novamente para limpá-lo, está tudo bem e parece não haver problema.
Mas existem problemas ao aplicar este método a sites reais.
Descrição do problema:
Tudo está bem ao fazer login pela primeira vez. Todos os nomes de subdomínio podem acessar os cookies armazenados no nome de domínio principal. No entanto, depois de sair, os cookies dos nomes de subdomínio são apagados, mas os cookies do nome de domínio principal são apagados. ainda retidos. Depois de limpar à força os cookies do nome de domínio principal, não importa como você faça login no nome de domínio principal, os cookies não podem ser salvos, a menos que você feche o navegador e o reabra.
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
<%
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, todo Read.asp é lido 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 para o qual o domínio foi definido e use diretamente Response.Cookies("CookieText") = CookieValue para criar um novo cookie.