расположение исходного кода Firefox, который анализирует заголовок Set-Cookie? - PullRequest
3 голосов
/ 08 июля 2010

Может кто-нибудь указать мне исходный код Firefox, где разбирается заголовок Set-Cookie? Я хочу понять точное поведение.

Читайте дальше, если хотите знать почему? Для различных ограничений в моем приложении мне нужно передать несколько файлов cookie в один заголовок Set-Cookie. RFC-2109 четко упоминает,

"Заголовок ответа Set-Cookie содержит маркер Set-Cookie:, за которым следует разделенный запятыми список из одного или нескольких файлов cookie. Каждый файл cookie начинается с пары NAME = VALUE, за которой следует ноль или более разделенных точкой с запятой пары атрибут-значение. "

Так что я должен быть в состоянии передать следующий заголовок Set-Cookie

Set-Cookie: name1 = value1; attr11 = attrval11; attr12 = attrval12, имя2 = значение2; attr21 = attrval21; attr22 = attrval22;

Это не работает. Тем не менее, следующее работает

Set-Cookie: имя1 = значение1, имя2 = значение2; attr1 = attrval1; attr2 = attrval2;

И я хочу дать разные атрибуты для разных файлов cookie.

[Update]

Реальные примеры :

Пример # 1-

Set-Cookie: cookie1 = значение1; Path = /, Cookie2 = значение2; Path = /

В этом случае Firefox анализирует и получает первый файл cookie (имя которого «cookie1» и значение «value1») из него (второй полностью игнорируется)

Пример # 2-

Set-Cookie: cookie1 = значение1, cookie2 = значение2; Path = /

В этом случае Firefox считает, что существует один файл cookie, имя которого «cookie1» и значение «value1, cookie2 = value2». Опять же, это не то, что было задумано.

Ответы [ 3 ]

1 голос
/ 08 июля 2010

Быстрый переход по MXR указывает на то, что основная логика находится в nsCookieService::SetCookieInternal. Вы можете переходить по ссылкам туда и обратно по мере необходимости. Что касается вашей реальной проблемы, это может помочь, если вы приведете реальный пример заголовка.

0 голосов
/ 08 июля 2010

хорошо, читая из исходного кода, становится ясно, что Firefox не реализует RFC-2109 в этом отношении и использует CR или LF вместо ',' в качестве разделителя cookie (строка уведомления № 1934, 1959, 1990 в http://mxr.mozilla.org/mozilla-central/source/netwerk/cookie/nsCookieService.cpp). Я пробовал оба в Firefox v3.6.6, CR работает, но LF не работает.

Вывод: в Firefox я могу использовать CR вместо ',' для разделения файлов cookie.

Сбой: ни один из (CR, LF, ',') не работает в Internet-Explorer. Теперь кто-то может указать мне на "исходный" код для IE, где я могу увидеть, что они используют в качестве разделителя cookie: -)

0 голосов
/ 08 июля 2010

Насколько я понимаю, браузеры реализуют стандарт несколько по-разному в отношении нескольких файлов cookie на заголовок Set-Cookie.Тем не менее, вы можете отправить несколько Set-Cookie заголовков, чтобы установить значение нескольких файлов cookie:

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

Хотя есть какая-то причина, по которой вы вручную заголовки к ответу вместо того, чтобы использовать какую-либо вашу среду (ASP.NET, RoR и т. Д.) Предоставляет?

...