可以有人请将我指向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在这方面没有实现RFC-2109,并使用CR或LF而不是','作为cookie分离器(通知行#1934,1959,1990,1990在 http://mxr.mozilla.org/mozilla-central/source/netwerk/cookie/nscookieservice.cpp )。我在Firefox v3.6.6上尝试过,CR工作,但LF不是。

结论:在Firefox上,我可以使用CR而不是','分开cookie。

故障:没有(CR,LF,',')正在互联网资源管理器。现在有人可以将我指出“源”代码,以便我可以看到他们使用的是cookie分隔符: - )

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top