解析Set-Cookie标头的firefox源代码的位置?

时间:2010-07-08 04:51:25

标签: java firefox cookies java-ee setcookie

有人可以指点我解析Set-Cookie标头的Firefox源代码吗?我想了解确切的行为。

如果你想知道原因,请进一步阅读? 对于我的应用程序中的各种约束,我需要在单个Set-Cookie标头内传递多个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:name1 = value1,name2 = value2; attR1位= attrval1; attR2位= attrval2;

并且,我想为不同的cookie提供不同的属性。

[更新]

真实示例

实施例#1 -

Set-Cookie:cookie1 = value1;路径= /,COOKIE2 =值2;路径= /

在这种情况下,firefox会解析并获取第一个cookie(其名称为“cookie1”,值为“value1”)(第二个被完全忽略)

实施例#2 -

Set-Cookie:cookie1 = value1,cookie2 = value2;路径= /

在这种情况下,firefox认为有一个cookie,其名称为“cookie1”,值为“value1,cookie2 = value2”。这又不是预期的。

3 个答案:

答案 0 :(得分:1)

快速浏览MXR表示主要逻辑位于nsCookieService::SetCookieInternal。您可以根据需要来回跟踪链接。就您的实际问题而言,如果您提供一个真实的示例标题可能会有所帮助。

答案 1 :(得分:0)

我的理解是,对于每个Set-Cookie标头的多个cookie,浏览器实现标准的方式有所不同。但是,您可以发送多个Set-Cookie标头来设置多个Cookie的值:

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

虽然有什么理由说明你手动使用标题来代替响应而不是使用你的框架(PHP,ASP.NET,RoR等)提供的任何内容吗?

答案 2 :(得分:0)

好吧,从源代码中读取它明确表示firefox在这方面没有实现RFC-2109并使用CR或LF代替','作为cookie分隔符(注意行#1934,1959,1990 {{3 }})。我在Firefox v3.6.6上尝试了两种,CR正在运行,但LF不是。

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

故障:没有(CR,LF,',')正在使用Internet-Explorer。现在,有人可以指出我为IE“代码”代码,我可以看到他们使用的cookie分隔符: - )