gpt4 book ai didi

c# - 为什么我看不到内容编码 : gzip response in my c# HttpClient response header?

转载 作者:行者123 更新时间:2023-12-02 17:36:19 24 4
gpt4 key购买 nike

我正在制作一个简单的 C# 程序来确定服务器端压缩在各种服务器上是否可用/启用。下面是我的请求代码。

using (var client = new HttpClient())
{
client.Timeout = new TimeSpan(0, 0, 5);
client.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36");
client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate, sdch, br");
var httpClientResponse = client.GetAsync(websiteURL).Result;
string header = httpClientResponse.Headers.GetValues("Content-Encoding").First();
}

通过观察 fiddler 中的请求,我可以看到该请求已启用压缩,但是我似乎无法从代码中的响应 header 中提取该信息。

这些是请求和响应的完整 header 。

GET https://www.dobbies.com/ HTTP/1.1
Accept: text/html, application/xhtml+xml, application/xml; q=0.9, image/webp, */*; q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36
Accept-Encoding: gzip, deflate, sdch, br
Host: www.dobbies.com

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server:
Set-Cookie: ASP.NET_SessionId=hx1rb34ottgfritgt3rciql4; path=/; secure; HttpOnly
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000
X-Xss-Protection: 1; mode=block
Date: Fri, 07 Apr 2017 08:06:17 GMT
Content-Length: 16836

这是我使用httpClientResponse.Headers时得到的结果

{
Vary: Accept-Encoding
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000
X-Xss-Protection: 1; mode=block
Cache-Control: private
Date: Fri, 07 Apr 2017 08:06:17 GMT
Set-Cookie: ASP.NET_SessionId=hx1rb34ottgfritgt3rciql4; path=/; secure; HttpOnly
Server:
}

如您所见,响应中缺少 Content-Encoding: gzip header 。

为什么这个 header 会丢失?和其他人一起。把我的标题还给我!

最佳答案

发现问题了。

HttpClient 方法返回的 HttpResponseMessage 有两个 header 属性:

HttpResponseMessage.Headers 是一个具有通用响应 header 的 HttpResponseHeaders

HttpResponseMessage.Content.Headers 是一个 HttpContentHeaders ,具有特定于内容的 header ,例如 Content-Type

关于c# - 为什么我看不到内容编码 : gzip response in my c# HttpClient response header?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43274136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com