use*_*596 20 c# cookies httpclient
我正在使用VS2010+ .NET 4.0+ System.Net.Http(来自Nuget).
由于我无法理解的原因,我收到的会话cookie HttpResponseMessage不会自动保存在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;
Run Code Online (Sandbox Code Playgroud)
我可以在响应头中看到我有以下内容:
Set-Cookie: JSESSIONID=FC8110E434C2C6DAB78B4E335024A639; Path=/member; Secure
Run Code Online (Sandbox Code Playgroud)
但是我的cookie容器仍然是空的...为什么?
Sal*_*lar 17
使用这段代码从响应中检索cookie:
/// <summary>
/// Read web cookies
/// </summary>
public static CookieContainer ReadCookies(this HttpResponseMessage response)
{
var pageUri = response.RequestMessage.RequestUri;
var cookieContainer = new CookieContainer();
IEnumerable<string> cookies;
if (response.Headers.TryGetValues("set-cookie", out cookies))
{
foreach (var c in cookies)
{
cookieContainer.SetCookies(pageUri, c);
}
}
return cookieContainer;
}
Run Code Online (Sandbox Code Playgroud)
我想问题是你的cookie是安全的.问题是,CookieContainer不会在后续HTTP请求中将安全cookie发送回服务器.它可能是一个bug,或者它背后有一些原因.
解决方法是手动将cookie重新添加到CookieContainer.这样,cookie将在HTTP请求标头中发回,因为当您将cookie发送回服务器时,不会定义安全性.
有关更多信息,请参阅此文章.
| 归档时间: |
|
| 查看次数: |
27817 次 |
| 最近记录: |