`
hanyh
  • 浏览: 227992 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HTTP的Accept-Encoding

阅读更多
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进行监测。
分享到:
评论

相关推荐

    accept-encoding-range-test

    在,建议浏览器应发送Accept-Encoding: identity以及范围请求,否则某些服务器将忽略该范围并返回200。因此,这是一个测试! data.json包含中以mp3或mp4结尾的所有URL,并由主机进行重复数据删除。 警告:这些是来自...

    http-accept:在Ruby中解析Accept和Accept-Language HTTP标头

    提供一组强大的解析器,用于处理HTTP Accept , Accept-Language , Accept-Encoding , Accept-Charset标头。 动机 我一直在,其中一部分涉及版本控制。 在检查了选项之后,我决定使用的Accept: application/json;...

    HTTP协议Header详解.html

    3 Accept-Encoding 5 4 Accept-Language 6 5 Accept-Range 7 6 Age 7 7 Allow 8 8 Authorization (授权) 8 9 Cache-Control 9 1什么是可缓存的 10 2什么能被缓存保存 11 3对基本过期机制的改进 11 4缓存重验证和...

    获得请求头的各种参数信息jsp代码

    获取 HTTP 头文件中 accept-encoding 的值: gzip,deflate,sdch 获取客户的 IP 地址: 0:0:0:0:0:0:0:1 获取客户机的名称: 0:0:0:0:0:0:0:1 获取服务器的名称: localhost 获取服务器的端口号: 48090 获取...

    http请求吗,响应头,状态码

    HTTP客户程序(例如浏览器),向服务器发送...3. Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。

    C#实现页面GZip或Deflate压缩的方法

    可以通过Request.Headers[“Accept-Encoding”]来获取。 在页面被压缩之前,需要获取页面实体主体,可通过 Response.Filter来获取(Stream类型) 示例代码: using System; using System.Data; using

    在python中使用requests 模拟浏览器发送请求数据的方法

    如下所示: import requests\nurl='http://####' ... "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", "Connection":"keep-alive", "Host

    为何要小心Nginx的add_header指令详解

    前言 大家都知道,nginx配置文件通过使用add_header指令来设置response header。...vary: Accept-Encoding, Cookie cache-control: max-age=3, must-revalidate last-modified: Thu, 07 Feb 2019 03:54:54 GMT X-Cach

    关于HTTP头中的vary的解释.zip

    关于HTTP头中的vary的解释 Vary-Accept-Encoding GZip

    WindowsMobile 实现简单断点续传(源码)

    Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705) Host: 192.168.3.120:8080 Connection: Keep-Alive HTTP/1.1 200 OK Server: Microsoft-IIS/...

    一个小小的封包教程,希望大家能喜欢!

    Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Host: bbs.wghai.com Connection: Keep-Alive Cache-Control: no-cache Cookie: ZC8_...

    断点续传java实现

    con.setRequestProperty("Accept-Encoding", "aa"); con.setRequestProperty("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7"); con.setRequestProperty("Keep-Alive", "300"); con....

    大数据爬虫技术第3章 网页请求原理.ppt

    Accept-Encoding(文件编解码格式) 指出浏览器可以接受的编码方式。编码方式不同于文件格式,它的作用是压缩文件并加速文件传递速度。 Accept-Language(语言种类) 指出浏览器可以接受的语言种类,如en或en-us指...

    简单python 爬虫,获取 省市区、镇、街道 爬虫原码.py

    简单python 爬虫,获取 省市区、镇、街道 爬虫原码 #!usr/bin/python ... 'Accept-Encoding': 'gzip, deflate' } ''' 获取省数据 ''' def getprovincetr(url = 'index.html'): .。。。。。。。。。。。。。。

    asp.net中利用ashx实现图片防盗链的原理分析

    img=svn_work.gif HTTP/1.1 Accept: */* Referer: //www.jb51.net/ Accept-Language: zh-cn UA-CPU: x86 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR...

    python 淘宝爬虫

    header['Accept-Encoding'] = 'gzip,deflate,sdch' header['Accept-Language'] = 'en-US,en;q=0.8' header['Connection'] = 'keep-alive' header['DNT'] = '1' #header['User-Agent'] = 'Mozilla/5.0 ...

    zotero-schema:Zotero数据模型的JSON表示

    Zotero数据架构 ...模式文件很大,因此请确保您的应用程序的HTTP客户Accept-Encoding: gzip在传递带有下载请求的Accept-Encoding: gzip 。 缓存文件及其ETag标头,并在检查更新时使用If-None-Match: 发出条

    快手did设备注册,快手sig签名(sign解决,操作太快了,请稍微休息一下)

    快手签名计算分析,我们抓包看到sig签名字段,是post请求,32位MD5算法,把?后面的参数和post的参数一起排序,组合计算。 1.抓包参数 POST /rest/n/user/profile/...Accept-Encoding: gzip, deflate client_key=5234234

    http-file-headers:使用tk-http在rust中制作全功能HTTP静态文件服务器的库

    Accept-Encoding以提供压缩(gzip和brotli)文件 提供index.html或类似的目录索引 该库未绑定到任何框架,HTTP甚至异步库。 因此它的用法非常冗长(请参阅)。 它仍然可以在内部完成大多数复杂的工作,并且可以轻松...

    PocCreator:GET和POST请求的POC创建者

    PocCreator GET和POST请求的POC创建者。 您只需要编辑脚本,然后选择输出... q = 0.5 Accept-Encoding:gzip,deflate Content-Type:application / x-www-form- urlencoded; charset = UTF-8 X-Requested-With:X

Global site tag (gtag.js) - Google Analytics