首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >严重的CookieContainer错误?

严重的CookieContainer错误?
EN

Stack Overflow用户
提问于 2014-11-18 20:54:51
回答 1查看 341关注 0票数 5

我是在这里遗漏了什么,还是CookieContainer中的一个bug?

我将向容器中添加3个cookie,然后调用两个urls的GetCookieHeader函数:

代码语言:javascript
复制
CookieContainer cc = new CookieContainer();

cc.Add(new Cookie("Cookie1", "1", "/a", "test.com"));
cc.Add(new Cookie("Cookie2", "2", "/a/0/", "test.com"));
cc.Add(new Cookie("Cookie3", "3", "/a/1/", "test.com"));

var result1 = cc.GetCookieHeader(new Uri("http://test.com/a/1/list"));
Assert.AreEqual("Cookie3=3; Cookie1=1", result1);

var result2 = cc.GetCookieHeader(new Uri("http://test.com/a/0/list"));
Assert.AreEqual("Cookie2=2; Cookie1=1", result2);

问题是最后一个断言,它抛出一个异常,因为返回的标头仅为"Cookie2=2“。我看不出有什么理由忽略Cookie1 cookie --根据RFC6265,它应该返回两个cookie,类似于上面的第一个断言,不是吗?

以下是几点意见:

  • cookies都在容器中,所以问题不是添加,而是GetHeader函数。
  • 这种行为在添加4,5等cookie时保持不变:只有匹配上次添加的cookie的路径才会包含基路径的cookie!
  • 当删除路径中的所有"a“并仅使用"/”、"/0/“和"/1/”作为3个cookie和断言urls中的"http://test.com/1/list“和"http://test.com/0/list”的路径时,行为会发生变化。所有的断言都成功了--我希望"a“也是如此!

PS:让我从规范中添加相关部分:

如果至少有下列条件之一,请求路径匹配给定的cookie路径:

-cookie路径和请求路径相同。

- cookie-path是请求路径的前缀,cookie路径的最后一个字符是%x2F ("/")。

- cookie-path是请求路径的前缀,请求路径中没有包含的第一个字符是%x2F ("/")字符。

所以对我来说这显然是个窃听器?

EN

回答 1

Stack Overflow用户

发布于 2014-11-18 22:46:13

我想我找到问题了。在函数System.Net.CookieContainer类InternalGetCookies(Uri)中,在第700-730行周围有一个路径的迭代。在找到第一个路径之后,这些cookie就会被添加,然后迭代就会中断,并且只会添加"/“的值!

换句话说:您只能从第一个匹配路径和从"/“获得cookie。对我来说,这是一个明显的错误行为,因此是一个错误--或者我不理解我上面提到的RFC。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27003836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档