C# HttpClient正在发送额外的cookie

C# HttpClient正在发送额外的cookie,c#,cookies,httpclient,fiddler,uwp,C#,Cookies,Httpclient,Fiddler,Uwp,运行UWP应用程序* 所以我有一个HttpClient和它的相关处理程序。我正在向一个网站发出请求,传递指定的标题,并使用指定的CookieContainer,在请求开始时它是空的 当我发送请求时,Fiddler会显示我没有添加的额外cookies。他们从哪里来 CookieContainer cookieJar = new CookieContainer(); HttpClientHandler handler = new HttpClientHandler(

运行UWP应用程序*

所以我有一个HttpClient和它的相关处理程序。我正在向一个网站发出请求,传递指定的标题,并使用指定的CookieContainer,在请求开始时它是空的

当我发送请求时,Fiddler会显示我没有添加的额外cookies。他们从哪里来

CookieContainer cookieJar = new CookieContainer();                
HttpClientHandler handler = new HttpClientHandler( );
handler.UseDefaultCredentials = false;
handler.CookieContainer = cookieJar;
handler.Proxy = null;
using (var client = new HttpClient(handler as HttpClientHandler))
{
    HttpResponseMessage response = new HttpResponseMessage();
    String loginUrl = Const.BUNGIE_LOGIN_URI + (provider == Const.XBOX_PLATFORM ? Const.XBOX_LOGIN : Const.PS_LOGIN);
    client.BaseAddress = new Uri(loginUrl);
    //client.Timeout = new TimeSpan(0, 0, 0, 0, 450);
    client.DefaultRequestHeaders.Add("Referer", "http://www.bungie.net");
    client.DefaultRequestHeaders.Add("User-Agent", Const.USERAGENT);
    client.DefaultRequestHeaders.Add("X-API-Key", Const.X_API_KEY);
    client.DefaultRequestHeaders.Add("Connection", "Keep-Alive");
    client.DefaultRequestHeaders.Add("Accept", "application/json");
    client.DefaultRequestHeaders.Add("Accept-Language", "en-GB,en-US;q=0.8,en;q=0.6");
    handler.AutomaticDecompression = DecompressionMethods.GZip;

    response = client.GetAsync("").Result;
    response.ReadCookies(); //adds cookies to cookieJar
 }

现在,由于在发出请求之前关联的
CookieContainer
是空的,这些cookie来自哪里?他们可以接近吗?如果我想从他们那里得到价值观,我将如何获得它们

编辑:它们是从哪里添加到我的HttpClient请求的?HttpClient是否具有公共CookieContainer/cache?我有两个单独的HttpClient实例,当客户端(A)发出请求时,它会收到一个“set cookie”头,设置一个“bulled”cookie

稍后,HttpClient的一个单独实例Client(B)向同一个网站发出请求,在Client(a)中发送cookie集


我没有明确地将这个cookie附加到客户机(B)的请求中,那么它是如何添加的呢

在Windows 10 build 10240上,
System.Net.Http.HttpClient
Windows.Web.Http.HttpClient
()之上的一个包装器,因此,cookie现在的工作方式略有不同

要删除这些额外的cookie,您需要使用
HttpCookieManager
删除cookie:

HttpBaseProtocolFilter filter = new HttpBaseProtocolFilter();
HttpCookieManager cookieManager = filter.CookieManager;
foreach (HttpCookie cookie in cookieManager.GetCookies(uri))
{
    cookieManager.DeleteCookie();
}

什么是
cookieJar
,它是如何创建的?另外,当您显式地将代理设置为null时,您是如何使用Fiddler捕获数据的?它是一个CookieContainer。将代码更新为reflect@DavidG难道我不能吗?我可以看到请求,如果该行存在或没有。正在发送的Cookies是服务器端功能。当你问这些cookies是什么时,答案应该是通过运行Fiddler或wireshark到同一个端点,这将证明它是服务器端的东西。这意味着答案与页面中呈现的内容相关。例如,可以引用谷歌分析或其他第三方的东西来设置“额外”cookies。