HttpWebResponse 的 Cookies 属性所填充的 Cookie 和 HttpWebResponse 的 Headers 中填充的 Cookie 是从原始的响应中直接解析出来的,也就是相应里有啥,这里就有啥,所以是 3;而 HttpWebRequest 的 CookieContainer 中的 Cookie 是对前面的 Cookies 中的 Cookie 经过一些分类(比如域名分类)和判断(比如是否过期)后才填充的,所以它的数量不一定同原始的 Cookie 数量相同。
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.baidu.com");
request.CookieContainer = new CookieContainer();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// response.Cookies.Count 这个是 3
// request.CookieContainer.Count 这个是 2
如果用 HttpClient 的话,HttpClientHandler 的 CookieContainer.Count 应该也是 2,如果要获取所有 3 个 Cookie 的话,使用 Task