- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在发出 HTTP 请求时,我设置了 Accept-Encoding: gzip
。但是,我注意到服务器实际上并没有压缩响应,除非 User-Agent
是“众所周知的”。我有以下演示问题的 Android 代码,它使用我很棒的用户代理获取“http://www.google.com”,并检查响应是否被压缩:
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setUserAgent(params, "MyApp/1.0 (Awesome)");
DefaultHttpClient client = new DefaultHttpClient(params);
HttpGet request = new HttpGet("http://www.google.com");
request.setHeader("Accept-Encoding", "gzip");
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
Header header = entity.getContentEncoding();
boolean isCompressed = false;
if (header != null) {
HeaderElement[] codecs = header.getElements();
for (int i = 0; i < codecs.length; i++) {
if (codecs[i].getName().equalsIgnoreCase("gzip")) {
isCompressed = true;
break;
}
}
}
if (isCompressed)
Log.i(TAG, "IT IS COMPRESSED");
else
Log.i(TAG, "IT IS NOT COMPRESSED");
运行这段代码会打印出“它没有被压缩”:(
但如果我将用户代理设置为 "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0"
,它会输出“IT IS COMPRESSED”。
我知道是否实际压缩是服务器的选择,但为什么要根据“User-Agent”进行选择?无论用户代理如何,我是否应该发送任何其他 header 选项来哄骗服务器进行压缩?
编辑:
我知道在处理 Accept-Encoding header 的过程中没有代理/等,因为当我得到 http://1.cgi.browserscope.net/cgi-bin/resource.cgi?headers =1
,我看到正确接收了 Accept-Encoding header
最佳答案
它几乎可以肯定是这样做的,因为一些遗留的用户代理广告支持 GZIP 然后无法正确解压缩内容。出于这个原因,已知某些服务器端框架仅向已知不会遭受此类错误的客户端发送压缩响应。
关于android - http 服务器不遵守接受编码 : gzip unless User-Agent is known browser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7140035/
016-03-07T09:10:16.992-0600 W NETWORK [HostnameCanonicalizationWorker] Failed to obtain name info f
我有一个工作的 C 程序,其中字符串数组的长度在编译时已知。它是: char array_person_name[3][101]; char person_name[101] = ""; ... st
我正在做一个需要Graph DB 的项目。我正在使用 C# .Net Core 开发项目。我不得不选择 ArangoDB 作为这个项目的 Graph DB。不幸的是,.Net 没有官方驱动程序。这就是
我正在尝试使用 DataContractSerializer 将对象序列化为 Xml。我有以下类(class); [ActiveRecord(Lazy = true)] [KnownType(type
我有: 身份服务器 4, 具有 OpenId Connect 和混合流的 Mvc 应用 WebApi 应用 假设用户已经获得带有 id_token 和访问 token 的 cookie。然后他从 mv
我有: 身份服务器 4, 具有 OpenId Connect 和混合流的 Mvc 应用 WebApi 应用 假设用户已经获得带有 id_token 和访问 token 的 cookie。然后他从 mv
我有一个简单的 Asp.Net Core Azure Web 应用程序,需要向本地 Rest 服务发出 http get 请求。此 Rest 服务托管在 IIS 上,仅针对端口 443 设置了绑定(b
这个问题可能是一个很好回答的问题,但不幸的是我不知道正确的术语来正确地问它,所以...... template class __bit_iterator; 有人可以在这里解释最后一个模板参数吗?我唯
在基于ASP.NET Core 1.1.1开发的VS2017 Ver 15.3.3应用程序中,我使用Account confirmation and password recovery in ASP.
我有一个应用程序(aspnet core app 3.1),在启动期间使用以下代码从 azure blob 存储加载数据: BlobClient client = new BlobClient(loa
我有一个应用程序(aspnet core app 3.1),在启动期间使用以下代码从 azure blob 存储加载数据: BlobClient client = new BlobClient(loa
我想知道如何查询Wikidata通过使用别名(“也称为”)。 现在我正在努力 SELECT ?item WHERE { ?item rdfs:aliases ?alias. FILTER(CONTAI
这是一个 PNG 类,在类文档中列出了两个构造函数,如下所示。 PNG::PNG ( string const & file_name ) Creates a PNG image
这就是我目前拥有的,以及我的教授提供的扫描仪。 #include "Similarity.h" #include "Scanner.h" using namespace std; int Simila
我想从我的 asp 页面连接到 mysql 数据库。因此,根据我的托管服务提供商的说法,我使用了连接字符串,其中服务器被指定为“localhost:3309” Dim myConnection As
我正在尝试集成的第三方应用程序,要求将文件放入 .well-known文件夹。如何使该文件可从 URL 访问? ( example.com/.well-known/token.txt )。站点部署为
尝试学习 Hibernate,我正在尝试学习如何执行 NamedQuries但每次我都会收到 Exception in thread "main" org.hibernate.MappingExcep
我正在尝试将 PWA 发布到 Google Playstore。我被困在数字 Assets 握手中。 这是我的 nginx conf - location /asd/ { default_t
我正在尝试设置 wordpress xml-rpc带 rails : blog = XMLRPC::Client.new("localhost/blog", "/xmlrpc.php", 80) 但是
我在我的 nginx 配置中有这个: location ~ /\. { deny all; } location /.well-known/ { allow all; } 但是我还是不
我是一名优秀的程序员,十分优秀!