2017-04-07 58 views
0

我正在制作一个简单的c#程序来确定服务器端压缩是否可用/启用在各种服务器上。这是我的请求代码如下。为什么不能在我的c#HttpClient响应头中看到Content-Encoding:gzip响应?

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(); 
} 

我可以通过观看该压缩为此请求启用,但是我似乎无法提取代码的响应报头信息中小提琴手请求见。

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

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: 
} 

正如你所看到的内容编码的头:gzip的中缺少的响应。

为什么这个标题会丢失?与其他人一起。给我回我的头!

回答

0

发现问题。

通过HttpClient的方法返回的HttpResponseMessage具有两个头属性:

HttpResponseMessage.Headers是HttpResponseHeaders包含通用响应头

HttpResponseMessage.Content.Headers是HttpContentHeaders与像内容类型内容特定的报头