Devo estar sentindo falta de algo básico sobre cookies. No localhost, quando defino um cookie no servidor e especifique o domínio explicitamente como localhost (ou .localhost). o cookie não parece ser aceito por alguns navegadores.
Firefox 3.5: verifiquei a solicitação HTTP no Firebug. O que eu vejo é:
Set-Cookie:
name=value;
domain=localhost;
expires=Thu, 16-Jul-2009 21:25:05 GMT;
path=/
ou (quando defino o domínio como .localhost):
Set-Cookie:
name=value;
domain=.localhost;
expires=Thu, 16-Jul-2009 21:25:05 GMT;
path=/
Nos dois casos, o cookie não é armazenado.
IE8: Eu não usei nenhuma ferramenta extra, mas o cookie não parece ser armazenado também, porque não está sendo enviado de volta em solicitações subsequentes.
Opera 9.64: Localhost e .localhost funcionam , mas quando eu checo a lista de cookies nas Preferências, o domínio é definido como localhost.local, mesmo listado em localhost (no agrupamento de listas).
Safari 4: localhost e .localhost funcionam , mas sempre são listados como .localhost nas Preferências. Por outro lado, um cookie sem um domínio explícito, sendo mostrado apenas como localhost (sem ponto).
Qual é o problema com o localhost? Devido a esse número de inconsistências, deve haver algumas regras especiais envolvendo o host local. Além disso, não está completamente claro para mim por que os domínios devem ser prefixados por um ponto? A RFC 2109 afirma explicitamente que:
O valor para o atributo Domínio não contém pontos incorporados ou não começa com um ponto.
Por quê? O documento indica que precisa fazer algo com segurança. Devo admitir que não li toda a especificação (pode fazê-lo mais tarde), mas parece um pouco estranho. Com base nisso, seria impossível definir cookies no host local.