HttpClient正在添加它自己的cookie头

本文关键字:自己的 cookie 它自己 添加 HttpClient | 更新日期: 2023-09-27 18:03:57

我有一个相当奇怪的问题。面对互联网上关于如何添加和获取cookie的所有问题,我想要相反的;)

当我尝试通过HttpHandler发送请求时,它正在添加自己的Cookie头。我得把它处理掉。没有深入研究细节-当它被添加,服务器我试图请求给我错误的答案。没有这个cookie也可以工作(在fiddler中尝试过)。

回到问题,代码:

    string domain = "someMysteriousDomain";
    var handler = new HttpClientHandler();
    handler.UseDefaultCredentials = false;
    handler.AllowAutoRedirect = true;
    handler.ClientCertificateOptions = ClientCertificateOption.Manual;
    handler.UseCookies = false;
    var httpClient = new HttpClient(handler);
    var request = new HttpRequestMessage(HttpMethod.Get, domain);
    request.Headers.UserAgent.Add(new ProductInfoHeaderValue("Mozilla", "5.0"));
    request.Headers.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip"));
    var response = await httpClient.SendAsync(request);

fiddler中出现的原始请求:

GET https://domain HTTP/1.1
Accept-Encoding: gzip
User-Agent: Mozilla/5.0
Host: domain
Connection: Keep-Alive
Cookie: cadata477E7C1824F44800AF0077724F65345="51595d316-0286-44bb-bc6f-ffb1fd311a92SqJA36rA69YW7aBg+iHXYi9LAcBLN6DBWE8a3MLejd2VCluO/UQ5eF6F6T4NWh4NhdRcv4rea15Hs0e2q6GatMac59UVbljhREYdH6PRbzZC/2qn8QHtpc6go5B56R"; mobile=0

我不想加那块饼干!如何删除/清除/无论什么?我正在使用Visual Studio Community 2015,使用Windows Universal Project。有趣的是,重启我的电脑几个小时后,我可以做2或3个请求没有这个cookie(使用相同的代码),然后神秘的cookie返回。是关于什么的?如何摆脱它?

HttpClient正在添加它自己的cookie头

感谢您报告此问题-这是Windows 10上System.Net.Http.HttpClientHandler API实现的已知问题,我们正在努力在即将发布的版本中修复它。

与此同时,一个可能的解决方案是使用Windows.Web.Http.HttpClient API和底层的HttpBaseProtocolFilter类。该类有一个名为CookieManager的属性,用于存储每个URI的所有cookie。您可以编写一个方法,在发送请求之前从目标URI的CookieManager中删除cookie。这将确保不会发送任何cookie。下面是如何从CookieManager中删除cookie的示例:https://github.com/Microsoft/Windows-universal-samples/tree/master/httpclient

谢谢Sidharth (MSFT)