解析set-cookie标头的Firefox源代码的位置?
-
12-09-2020 - |
题
可以有人请将我指向set-cookie标题的Firefox源代码吗?我想了解确切的行为。
如果您想知道为什么? 对于我的应用程序中的各种约束,我需要通过单个set-cookie标头内的多个cookie。 RFC-2109清楚提及,
“set-cookie响应标题包括令牌set-cookie:,后跟一个或多个cookie的逗号分隔列表。每个cookie以名称=值对开始,然后是零或更多半冒号分开属性值对。“
所以我应该能够通过set-cookie标题
set-cookie:name1= value1; attr11= attrval11; attr12= attrval12,name2= value2; attr21= attrval21; attr22= attrval22;
它不起作用。但是,以下工作是工作
set-cookie:name1= value1,name2= value2; attr1= attrval1; attr2= attrval2;
,我想给出不同的cookie的不同属性。
[更新]
实例:
示例#1 -
set-cookie:cookie1= value1;路径= /,cookie2= value2;路径= /
在这种情况下,Firefox解析并获取第一个cookie(其名称为“cookie1”,值为“value1”)(第二个是完全被忽略的)示例#2 -
set-cookie:cookie1= value1,cookie2= value2;路径= /
在这种情况下Firefox认为有一个cookie,其名称为“cookie1”,值为“value1,cookie2= value2”。这一次,这不是预期的。
解决方案
快速浏览 mxr 表示主逻辑在 nsCookieService::SetCookieInternal
。您可以根据需要来回遵循链接。就您的实际问题而言,如果您提供真正的示例标题,它可能有助于。
其他提示
我的理解是,在每个Set-cookie标头的多个cookie方面,浏览器稍微不同地实现了标准。但是,您可以发送多个Finainodicetagcode标题以设置多个cookie的值:
Set-Cookie: name1=value1; attr11=attrval11; attr12=attrval12
Set-Cookie: name2=value2; attr21=attrval21; attr22=attrval22
.
虽然您是有原因为什么您手动标题为响应,而不是使用您的框架(PHP,ASP.NET,ROR等)提供?
结论:在Firefox上,我可以使用CR而不是','分开cookie。
故障:没有(CR,LF,',')正在互联网资源管理器。现在有人可以将我指出“源”代码,以便我可以看到他们使用的是cookie分隔符: - )