Pergunta

Alguém por favor pode me apontar para o Firefox código-fonte onde cabeçalho Set-Cookie é analisado?Eu quero entender o comportamento exato.

Leia mais se você quer saber por quê?Para vários restrição na minha aplicação, eu preciso passar vários cookies, dentro único Set-Cookie cabeçalho.RFC 2109 menciona claramente,

"Set-Cookie resposta cabeçalho compreende o token Set-Cookie:, seguido por uma lista separada por vírgulas de um ou mais cookies.Cada cookie começa com um NOME=VALOR par, seguido por zero ou mais semi-dois pontos separados por pares atributo-valor."

Então, eu deveria ser capaz de passar o seguinte cabeçalho Set-Cookie

Set-Cookie:nome1=valor1;attr11=attrval11;attr12=attrval12,nome2=valor2;attr21=attrval21;attr22=attrval22;

Ele não funciona.No entanto, a seguir funciona

Set-Cookie:nome1=valor1, nome2=valor2;attr1=attrval1;attr2=attrval2;

E, eu quero dar atributos diferentes para diferentes cookies.

[Atualização]

Exemplos Reais:

Exemplo#1-

Set-Cookie:cookie1=valor1;Path=/,cookie2=valor2;Caminho=/

Neste caso, o firefox analisa e fica com o primeiro cookie(cujo nome é "cookie1" e o valor é "valor1") de fora(segundo é completamente ignorado)

Exemplo#2-

Set-Cookie:cookie1=valor1,cookie2=valor2;Caminho=/

Neste caso, o firefox acredita que há um cookie cujo nome é "cookie1" e o valor é "valor1,cookie2=valor2".Isso, novamente, não é o que foi destinado.

Foi útil?

Solução

uma rápida caminhada através de mxr indica que a lógica principal está em nsCookieService::SetCookieInternal .Você pode seguir os links para frente e para trás conforme necessário.No que diz respeito ao seu problema real, pode ajudar se você der um verdadeiro cabeçalho de exemplo.

Outras dicas

O meu entendimento é que os navegadores implementam o padrão um pouco diferente em relação a vários cookies por Set-Cookie cabeçalho.No entanto, você pode enviar vários Set-Cookie cabeçalhos para definir o valor de vários cookies:

Set-Cookie: name1=value1; attr11=attrval11; attr12=attrval12
Set-Cookie: name2=value2; attr21=attrval21; attr22=attrval22

Apesar de que existe alguma razão pela qual você está manualmente os cabeçalhos de resposta em vez de usar o que quer que seu quadro (PHP, ASP.NET, RoR, etc) fornece?

Bem, lendo do código-fonte É claro que o Firefox não implementa RFC-2109 a este respeito e usa CR ou LF em vez de ', como separador de cookie (linha de aviso prévio # 1934, 1959, 1990 em http://mxr.mozilla.org/mozilla-central/source/netwerk/Cookie/nscookieservice.cpp ).Eu tentei tanto no Firefox v3.6.6, Cr está funcionando, mas o LF não é.

Conclusão: No Firefox, posso usar CR em vez de ',' para separar cookies.

Glitch: nenhum fora de (CR, lf, ',') estão trabalhando no Internet-Explorer.Agora alguém pode me apontar para o código "Fonte" para o IE, onde posso ver o que eles estão usando como separador de cookies: -)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top