расположение исходного кода firefox, который анализирует заголовок Set-Cookie?
-
12-09-2020 - |
Вопрос
Может кто-нибудь, пожалуйста, указать мне на исходный код Firefox, где анализируется заголовок Set-Cookie?Я хочу понять точное поведение.
Читайте дальше, если хотите знать, почему?Для различных ограничений в моем приложении мне нужно передать несколько файлов cookie внутри одного заголовка Set-Cookie.В RFC-2109 четко упоминается,
"Заголовок ответа Set-Cookie содержит маркер Set-Cookie:, за которым следует разделенный запятыми список из одного или нескольких файлов cookie.Каждый файл cookie начинается с пары ИМЯ=ЗНАЧЕНИЕ, за которой следуют ноль или более пар атрибут-значение, разделенных точкой с запятой."
Таким образом, я должен быть в состоянии передать следующий заголовок Set-Cookie
Установить-Cookie:имя1=значение1;attr11=attrval11;attr12=attrval12,имя2=значение2;attr21=attrval21;attr22=attrval22;
Это не работает.Однако следующее действительно работает
Установить-Cookie:имя1=значение1, имя2=значение2;attr1=attrval1;attr2=attrval2;
И я хочу присвоить разные атрибуты для разных файлов cookie.
[Обновление]
Реальные примеры:
Пример №1-
Установить-Cookie:печенье 1=значение1;Путь=/,cookie2=значение2;Путь=/
В этом случае firefox анализирует и получает из него первый файл cookie (имя которого "cookie1", а значение - "value1") (второй полностью игнорируется)
Пример№2-
Установить-Cookie:cookie1=значение1,cookie2=значение2;Путь=/
В этом случае firefox считает, что существует один файл cookie с именем "cookie1" и значением "value1,cookie2=value2".Это, опять же, не то, что было задумано.
Решение
Быстрая прогулка через mxr указывает на главную логику в nsCookieService::SetCookieInternal
.Вы можете следить за ссылками назад и вперед по мере необходимости.Что касается вашей реальной проблемы, это может помочь, если вы дадите реальный пример заголовка.
Другие советы
Насколько я понимаю, браузеры реализуют стандарт несколько по-разному в отношении нескольких файлов cookie для каждого заголовка Set-Cookie.Однако вы можете отправить несколько Set-Cookie
заголовки для установки значения нескольких файлов cookie:
Set-Cookie: name1=value1; attr11=attrval11; attr12=attrval12
Set-Cookie: name2=value2; attr21=attrval21; attr22=attrval22
Хотя есть ли какая-либо причина, по которой вы вручную добавляете заголовки к ответу вместо того, чтобы использовать все, что предоставляет ваш фреймворк (PHP, ASP.NET, RoR и т.д.)?
Ну, чтение от исходного кода. Понятно, что 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.
Glitck: Нет из (CR, LF, ','), работает над интернет-исследователем.Теперь может кто-нибудь указать мне «исходный» код для IE, где я могу видеть, что они используют в качестве сепаратора cookie: -)