HTTP Header中Accept-Encoding

HTTP Header中Accept-Encoding 是浏览器发给服务器,声明浏览器支持的编码类型[1]

常见的有

Accept-Encoding: compress, gzip //支持compress 和gzip类型

Accept-Encoding: //默认是identity

Accept-Encoding: * //支持所有类型 Accept-Encoding: compress;q=0.5, gzip;q=1.0//按顺序支持 gzip , compress

Accept-Encoding: gzip;q=1.0, identity; q=0.5, *;q=0 // 按顺序支持 gzip , identity

服务器返回的对应的类型编码header是 content-encoding.服务器处理accept-encoding的规则如下所示 1. 如果服务器可以返回定义在Accept-Encoding 中的任何一种Encoding类型, 那么处理成功(除非q的值等于0, 等于0代表不可接受) 

2. * 代表任意一种Encoding类型 (除了在Accept-Encoding中显示定义的类型) 

3.如果有多个Encoding同时匹配, 按照q值顺序排列 

4. identity总是可被接受的encoding类型(除非显示的标记这个类型q=0) ,

如果Accept-Encoding的值是空, 那么只有identity是会被接受的类型

如果Accept-Encoding中的所有类型服务器都没发返回, 那么应该返回406错误给客户端

如果request中没有Accept-Encoding 那么服务器会假设所有的Encoding都是可以被接受的。

如果Accept-Encoding中有identity 那么应该优先返回identity (除非有q值的定义,或者你认为另外一种类型是更有意义的)

注意:

如果服务器不支持identity 并且浏览器没有发送Accept-Encoding,那么服务器应该倾向于使用HTTP1.0中的 "gzip" and "compress" , 服务器可能按照客户端类型 发送更适合的encoding类型大部分HTTP1.0的客户端无法处理q值

2编码类型编辑

GZIP:[2]

GZIP最早由Jean-loup Gailly和Mark Adler创建,用于UNIX系统的文件压缩。我们在Linux中经常会用到后缀为.gz的文件,它们就是GZIP格式的。现今已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式。 HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术。大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度。这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中的网站时,服务器中的这个功能就将网页内容压缩后传输到来访的电脑浏览器中显示出来.一般对纯文本内容可压缩到原大小的40%.这样传输就快了,效果就是你点击网址后会很快的显示出来.当然这也会增加服务器的负载. 一般服务器中都安装有这个功能模块的.

COMPRESS[3]

compress是一个相当古老的 unix 档案压缩指令,压缩后的档案会加上一个 .Z 延伸档名以区别未压缩的档案,压缩后的档案可以以 uncompress 解压。若要将数个档案压成一个压缩档,必须先将档案 tar 起来再压缩。由于 gzip 可以产生更理想的压缩比例,一般人多已改用 gzip 为档案压缩工具。

HTTP Header中Accept-Encoding

时间: 2024-10-09 08:16:08

HTTP Header中Accept-Encoding的相关文章

QT断点续传(原理:需要在HTTP请求的header中添加Rang节,告诉服务器从文件的那个位置开始传输.格式为bytes 开始传输的位置)

//功能:    根据一个URL地址将数据保存到指定路径下,支持断点续传//参数:    url            --需要访问的URL地址//         SavePath       --需要保存的路径//DownedSize 已经下载的大小// totalSize 文件总大小//返回值:  ture --成功 false --失败bool HttpGet::DownFile(const QUrl &url,const QString &SavePath,int DownedS

HTTP header中Cache-control的值

Cache-Control的值可以是public.private.no-cache.no- store.no-transform.must-revalidate.proxy-revalidate.max-age 含义如下 1.Public:指示响应可被任何缓存区缓存,如果响应被标记为public,即使有关联的 HTTP 认证,甚至响应状态码无法正常缓存,响应也可以被缓存. 2.Private:指示对于单个用户的整个或部分响应消息,不能被共享缓存处理.这允许服务器仅仅描述当用户的部分响应消息,此响

调用Restful Service 出现415 Unsupported Media Type的问题(Rest Request Header中的Content-Type问题)

用Chrome的插件Simple REST Client 调用POST的REST服务时,老是报415错误,如图. 一开始就以为是服务端的问题,各种google,百度,折腾了一下午未果. 晚上继续看,一不小心看到返回的Response的Headers中Content-Type的值与冒号之间有一个空格,于是将Request的Content-Type:application/json;charset=UTF-8改成Content-Type: application/json;charset=UTF-8

ASP.NET Web API中把分页信息放Header中返回给前端

谈到ASP.NET Web API的分页,考虑的因素包括: 1.上一页和下一页的uri2.总数和总页数3.当前页和页容量 接着是服务端的数据以怎样的形式返回? 我们通常这样写: {    totalCount:10,    result: [        {id:1, name:"a"},        {id:2, name:"b"}    ]} 以上,把分页相关和实体信息以json格式返回给前端.但在本篇,尝试另外一种方式:把分页信息放在Header中返回给前

Wildfly8 更改response header中的Server参数

项目经过局方安全检查需要屏蔽掉服务器中间件信息,查了一下午,网上看到的都是修改jboss7的,我们使用的wildfly8(jboss改名为wildfly),修改地方不一样,折磨了半天. jboss服务器缺省情况下会在HTTP response header中显示自身的标识,如下:    这样会暴露服务器信息,别人可能就会根据这个信息查找服务器漏洞对服务器进行攻击. 屏蔽方法: 修改domain.xml文件,在wildfly8中,该文件位于   wildfly安装目录下/domain/config

js在返回response header中取值

最近后台给我返回一个字段,放在response header中,让我获取后判断进行下一步操作: 不过在网上查询了n多方法后,还是只能得到conten-type:但是在控制台中response header明明就看到了传递过来的其他字段,就是取不出来,虽然后面又更改了其他方法解决了问题,但是本着遇到问题尽量解决的原则,在午休的时候,通过网上各种查找,终于发现了问题所在:后台的哥们,真的不是我的错,是你们设置的不够啊!!!!!! 后台需要在服务器上设置'Access-Control-Expose-H

通过python获得header中的session

在做接口自动化过程中,我们常常会用到用户登录后进行接口测试,那么我们如何进行获取header中的session呢.我们现在看一下以下代码:def session(DATA):#通过配置文件获得url地址,也可以写死在这里Url = ConnUrl.getUrl()#声明request的请求类型,是json还是textheader = {'content-type':'application/octet-stream'}#发送登陆请求post = requests.post(Url, data=D

php 发送post请求且header中带参数bug调试

  通常get方式header中带参数如下通过curl调用即可: function send_get_curl_header($url, $data){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,

隐藏ASP.NET MVC的版本信息,使其不在HTTP Header中显示

隐藏ASP.NET MVC的版本信息,使其不在HTTP Header中显示. 一.隐藏:X-AspNetMvc-Version 在Global.asax文件的Application_Start方法中添加: MvcHandler.DisableMvcResponseHeader = true; 二.移除 Header 中的 Server 在Global.asax文件中添加: protected void Application_PreSendRequestHeaders(object sender