5

ここで何かが足りないのですか、それとも 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);

問題は、返されたヘッダーが「Cookie2=2」のみであるため、例外をスローする最後のアサーションです。Cookie1 Cookie が省略されている理由がわかりません。RFC6265 によれば、上記の最初のアサーションと同様の 2 つの Cookie を返す必要があります。

いくつかのコメント:

PS: 仕様から関連する部分を追加させてください:

次の条件の少なくとも 1 つが保持される場合、要求パス パスは特定の cookie パスと一致します。

- cookie-path と request-path は同一です。

- cookie-path は request-path のプレフィックスであり、cookie-path の最後の文字は %x2F ("/") です。

- cookie-path は request-path のプレフィックスであり、cookie-path に含まれていない request-path の最初の文字は %x2F ("/") 文字です。

だから私にはこれは明らかにバグです...?

4

1 に答える 1