Closed
Description
Description
CookieContainer doesn't replace cookie which added using CookieContainer.Add(Uri uri, Cookie cookie)
Reproduction Steps
- Add cookie to CookieContainer
- Do http/s request
- Receive cookie from web server with existing cookie name in CookieContainer
Expected behavior
New cookie received from web server must replace existing cookie with same name
Actual behavior
New cookie doesn't replace old cookie and we have two cookies with same name
Regression?
No response
Known Workarounds
No response
Configuration
Win 10 .Net 6.0.16 7.0.5 .Net Framework 4.7 4.8 4.8.1
Other information
static Task<HttpResponseMessage> HttpReq(CookieContainer cookieContainer)
{
string url = "https://arduino.ua/";
// Now create a client handler which uses that proxy
var httpClientHandler = new HttpClientHandler
{
CookieContainer = cookieContainer,
UseCookies = true
};
httpClientHandler.AllowAutoRedirect = true;
var client = new HttpClient(
handler: httpClientHandler,
disposeHandler: true
);
client.Timeout = TimeSpan.FromSeconds(30);
// add default headers
client.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "text/javascript, text/html, application/xml, text/xml, */*");
client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/109.0");
client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Encoding", "gzip, deflate, br");
client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Language", "uk-UA,uk;q=0.8,en-US;q=0.5,en;q=0.3");
var response = client.GetAsync(url);
return response;
}
var cookieContainer = new CookieContainer();
Uri uri = new Uri("https://arduino.ua");
System.DateTime today = System.DateTime.Now;
System.DateTime Expires = today.AddYears(1);
Cookie cookie = new Cookie();
cookie.Expires = Expires;
cookie.HttpOnly = false;
cookie.Value = "nnnnn";
cookie.Name = "FBeID";
cookie.Domain = "arduino.ua";
cookieContainer.Add(uri, cookie);
var response = HttpReq(cookieContainer);
response.Result.Content.ReadAsStringAsync().Wait();
IEnumerable<Cookie> responseCookies = cookieContainer.GetCookies(uri).Cast<Cookie>();
foreach (Cookie new_cookie in responseCookies)
{
Console.WriteLine(new_cookie.Name + "=" +new_cookie.Value);
}
request cookies:
Cookie: FBeID=nnnnn
resonce cookies:
Set-Cookie: PHPSESSID=eljpt8ef572ulpqn6bkv6io93h; expires=Thu, 18-Jan-2024 02:33:24 GMT; Max-Age=24105600; path=/
Set-Cookie: FBeID=1423878233
CookieContainer content:
PHPSESSID=eljpt8ef572ulpqn6bkv6io93h
FBeID=1423878233
FBeID=nnnnn