我正在使用VS2010 + .NET 4.0 + System.Net.Http(来自Nuget)。

由于我无法理解的原因,我在HttpResponseMessage中收到的 session cookie不会自动保存在HttpClient CookieContainer中。
这是我的代码:

CookieContainer cookies = new CookieContainer();
HttpClientHandler handler = new HttpClientHandler();
handler.CookieContainer = cookies;
HttpClient client = new HttpClient(handler);

Uri site = new Uri("https://www.mywebsite.com");
var response1 = client.SendAsync(new HttpRequestMessage(HttpMethod.Get,site)).Result;

我可以在响应 header 中看到以下内容:

Set-Cookie: JSESSIONID=FC8110E434C2C6DAB78B4E335024A639; Path=/member; Secure

但是我的cookie容器仍然是空的...为什么?

最佳答案

我想问题是您的Cookie是安全的。问题在于,CookieContainer不会在后续的HTTP请求中将安全cookie发送回服务器。这可能是错误,或者背后有某些原因。

解决方法是手动将cookie重新添加到CookieContainer。这样,cookie将在HTTP请求 header 中发送回去,因为将cookie发送回服务器时不会定义安全性。

有关更多信息,请参见this article

关于c# - HttpClient不在CookieContainer中存储cookie,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14681144/

10-13 05:54