localização do firefox código-fonte que analisa o cabeçalho Set-Cookie?
-
12-09-2020 - |
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.
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: -)