HttpClient不解密HTTPS没有Fiddler

本文关键字:没有 Fiddler HTTPS 解密 HttpClient | 更新日期: 2023-09-27 18:07:04

我不确定我的问题是否正确,但是我找不到任何相关的信息。我假设HttpClient应该自动解密HTTPS响应,但由于某种原因,它没有,除非Fiddler正在运行。

HttpClient Client;
HttpResponseMessage response;
using (var request = new HttpRequestMessage(HttpMethod.Get, "https://www.google.com/"))
{
    request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/html"));
    response = await Client.SendAsync(request);
    response.EnsureSuccessStatusCode();
}
string sResponse = await response.Content.ReadAsStringAsync();
Log(sResponse); // "'u001f�'b'0'0'0'0'0'u0002��i{۸�0��'u007f'u0005͜c�c�'u0016" etc.

我尝试在Fiddler中禁用所有与https相关的选项并重置IE代理选项,但情况似乎并非如此。

HttpClient不解密HTTPS没有Fiddler

原来我有错误的Accept-Encoding头:

Client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate");
编辑:

你可以使用"gzip, deflate"编码,但是你必须在HttpClientHandler:

中指定解压方法。
HttpClientHandler handler = new HttpClientHandler()
{
    AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
};
using (var client = new HttpClient(handler))
{
    // your code
}

删除request.Headers.Add("Accept-Encoding", "gzip, deflate, br");