HttpClient正在添加它自己的cookie头

时间:2015-07-21 20:59:06

标签: c# windows cookies httpclient win-universal-app

我有一个比较奇怪的问题。通过互联网上的所有问题如何添加和获取cookie,我想要相反;)

当我尝试通过HttpHandler发送请求时,它正在添加它自己的Cookie标头。我必须摆脱它。没有深入细节 - 当它被添加时,我试图请求的服务器给我错误的答案。它没有这个cookie(在提琴手中试过)。

但回到问题,代码:

    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

我不想添加该Cookie!如何删除/清除/不管它? 我正在使用Visual Studio Community 2015和Windows Universal Project。 有趣的是,几小时后重新启动电脑后,我能够在没有此cookie的情况下发出2或3个请求(使用相同的代码)然后返回mysterios cookie。 它是什么意思?如何摆脱它?

1 个答案:

答案 0 :(得分:2)

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

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

由于 Sidharth [MSFT]