`
hanyh
  • 浏览: 237183 次
  • 性别: 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,并由主机进行重复数据删除。 警告:这些是来自...

    关于squid请求源服务器的响应中带Vary头1

    在存储响应时,Squid 使用内部对象头表示 HTTP 响应头,而对象体则保存了 URL 包含的各种 "Accept-Encoding" 值以及相应的 StoreEntry 的 KEY。例如,响应头中会有一个特殊的 "x-squid-internal/vary" 类型,用于...

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

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

    IIS上启用Gzip压缩(HTTP压缩)

    1. **接收HTTP请求**:当Web服务器接收到用户的HTTP请求时,它首先会检查该请求中的“Accept-Encoding”头部信息,判断客户端(浏览器)是否支持HTTP压缩。如果“Accept-Encoding”包含“gzip, deflate”,则表明...

    网页GZIP压缩检测例子-易语言

    在HTTP协议中,客户端可以通过设置`Accept-Encoding`头部来告知服务器它支持的压缩格式,如`gzip, deflate`等。服务器根据这个信息决定是否启用GZIP压缩。同样,服务器在响应中会通过`Content-Encoding`头部告知...

    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 获取...

    HTTP1.1消息头

    请求头是客户端在请求消息中添加的一些附加信息,包括 Accept、Accept-Charset、Accept-Encoding、Accept-Language、Authorization、Expect、From、Host、If-Range、Max-Forwards、Proxy-Authorization 和 Range 等...

    HTTP 响应码和Header信息介绍文档

    * 通用头标:Accept、Accept-Charset、Accept-Encoding、Accept-Language、Accept-Ranges、Age、Allow、Authorization、Cache-Control、Connection、Content-Base、Content-Encoding、Content-Language、Content-...

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

    这通过读取HTTP请求头中的`Accept-Encoding`字段来完成,该字段列出了客户端接受的编码类型。如果`Accept-Encoding`包含“gzip”,我们就使用GZipStream;如果包含“deflate”,我们就使用DeflateStream。这两者都...

    Node.js API详解之 zlib模块用法分析

    例如,在HTTP请求中,客户端通过Accept-Encoding头部告知服务器它支持的压缩编码方式。服务器根据请求中的信息,使用zlib模块来压缩响应内容,再通过Content-Encoding头部告知客户端实际使用了哪种压缩编码。 在...

    HTTP 请求报头详解

    * Request Header Fields:Accept、Accept-Charset、Accept-Encoding、Accept-Language、Authorization、Expect、From、Host、If-Match、If-Modified-Since、If-None-Match、If-Range、If-Unmodified-Since、Max-...

    在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

    tcp/ip-HTTP-Header-消息报头

    - **Accept-Encoding**: 客户端支持的数据压缩格式,例如`Accept-Encoding: gzip`。 - **Accept-Language**: 客户端可以接受的语言,例如`Accept-Language: zh-CN`。 - **Authorization**: 客户端向服务器提供的认证...

    HTTP协议的头信息详解.pdf

    * Accept-Encoding 头域:指定客户机可以接受的响应内容编码。 * Accept-Language 头域:指定客户机可以接受的语言。 响应头域 响应头域包含服务器向客户机发送的响应消息的头域,例如: * Content-Type 头域:...

    Java压缩技术(五) GZIP相关——浏览器解析

    在服务器端,如果需要支持GZIP压缩,可以检查HTTP请求头中的`Accept-Encoding`字段,判断客户端是否接受GZIP压缩。如果接受,服务器就可以使用`GZIPOutputStream`对响应内容进行压缩,然后发送给客户端。例如: ```...

    关于Vary渲染.doc

    2. **压缩处理**:如果服务器根据"Accept-Encoding"来选择是否压缩响应,Vary头应包含"Accept-Encoding"。这确保了不同压缩需求的请求不会错误地共享同一个压缩或未压缩的响应。 3. **自适应图片**:在响应中包含...

    Benchmarking for http2

    这条命令除了执行基本的负载测试外,还会在每个请求中添加`accept-encoding:gzip`头部,以请求服务器返回压缩的数据。 - **多线程支持**: ```bash h2load -t 2 -n 100 -c 10 -m 10 --header="accept-encoding:...

    常见请求和响应头-说明.doc

    3. Accept-Encoding:客户端告知服务器它支持的内容压缩编码类型,如gzip、compress。示例:Accept-Encoding: compress, gzip 4. Accept-Language:客户端可以接受的语言,如英语(en)或中文(zh)。示例:Accept-...

Global site tag (gtag.js) - Google Analytics