我正在使用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/