文档章节

HTTP的Accept-Encoding

徐学良
 徐学良
发布于 2017/02/14 10:28
字数 462
阅读 20
收藏 0

HTTP Header中Accept-Encoding 是浏览器发给服务器,声明浏览器支持的编码类型的,Python的HTTPConnection默认是identitiy类型. 
常见的有 

       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值.并且有的服务器无论是否传递了Accept-Encoding,都会返回压缩数据,所以还是要对response的Content-Encoding进行监测。

本文转载自:http://hanyh.iteye.com/blog/1725733

共有 人打赏支持
徐学良
粉丝 22
博文 213
码字总数 13841
作品 0
浦东
程序员
Varnish使用小结

文章原始出处和作者信息及本声明 http://iyubo.blogbus.com/logs/35085709.html 此日志会随时更新,当然,是随着我的应用积累:) 实现静态文件压缩 Varnish itself does not compress or deco...

晨曦之光
2012/03/09
149
0
让nginx始终返回gzip内容

一般来说,gzip压缩是否启用,除了服务器支持外,客户端也要支持。当客户端发送Accept-Encoding:gzip这个request header,服务器即认为其能接受gzip压缩,就响应一个Content-Encoding:gzip,...

范堡
2010/02/06
2.1K
0
gzip阿gzip你就那么难开启吗。。。

同样的环境。都是手动配置的,云主机开启不了,虚拟机能开启。 会不会是系统的问题呢? 云主机phpinfo得到。。HTTPBCCEPTENCODING gzip, deflate 而虚拟机的phpinfo是这样的。。HTTPACCEPTE...

荣鹏
2012/07/11
431
0
启用apache2的mod_proxy与mod_disk_cache,如何减少同一网页的缓存副本

当客户端请求支持gzip时,apache2缓存的内容是经过压缩的。当HTTPACCEPTENCODING为"gzip, deflate"、"gzip"这两种情况时,它会缓存同一个网页2份相同的gzip压缩版本,可不可以共用一份? 我一...

wys444
2012/04/17
353
1
wiki.openwrt.org无法打开的解决办法

http://wiki.openwrt.org/ 有些打开(IE 9)有些不行(IE 6 FF)可能是英文版和中文版语言优先级不同。mason改header后能正常打开。 不用扩展的方法:选项---》内容---》页面优先语言----》把...

AlphaJay
2011/07/26
0
1

没有更多内容

加载失败,请刷新页面

加载更多

一个可能的NEO链上安全随机数解决方案

0x00 困境 链上安全随机数生成应该算是一个比较蛋疼的问题,哪怕你的系统再牛逼,合约程序困在小小的虚拟机里,哪怕天大的本事也施展不开。 更悲催的是,交易执行的时候,是在每一个节点都执...

暖冰
今天
1
0
【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
1
0
Spring5对比Spring3.2源码之容器的基本实现

最近看了《Spring源码深度解析》,该书是基于Spring3.2版本的,其中关于第二章容器的基本实现部分,目前spring5的实现方式已有较大改变。 Spring3.2的实现: public void testSimpleLoad(){...

Ilike_Java
今天
1
0
【王阳明心学语录】-001

1.“破山中贼易,破心中贼难。” 2.“夫万事万物之理不外于吾心。” 3.“心即理也。”“心外无理,心外无物,心外无事。” 4.“人心之得其正者即道心;道心之失其正者即人心。” 5.“无...

卯金刀GG
今天
2
0
OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部