小编sru*_*din的帖子

严重的CookieContainer错误?

我在这里遗漏了什么,或者这是CookieContainer中的错误?

我正在向容器中添加3个cookie,然后我为2个URL调用GetCookieHeader函数:

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);
Run Code Online (Sandbox Code Playgroud)

问题是抛出异常的最后一个断言,因为返回的头只是"Cookie2 = 2".我没有看到为什么在那里省略Cookie1 cookie的原因 - 根据RFC6265它应该返回两个类似于上面第一个断言的cookie,不应该吗?

几句话:

  • cookie都在容器中,因此不是添加问题而是GetHeader函数.

  • 添加4,5等cookie时,此行为保持不变:只有与最后添加的cookie匹配的路径才会包含基本路径的cookie!

  • 删除路径中的所有"a"并仅使用"/","/ 0 /"和"/ 1 /"作为3个cookie的路径和" http://test.com/1/list " 时,行为会发生变化断言网址中的" http://test.com/0/list ").所有断言然后成功 - 我期望与"a"相同的行为!

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

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

- cookie路径和请求路径是相同的.

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

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

所以对我来说这显然是一个错误......?

c# system.net cookiecontainer web

5
推荐指数
1
解决办法
277
查看次数

标签 统计

c# ×1

cookiecontainer ×1

system.net ×1

web ×1