`

Accept-Encoding

 
阅读更多
       HTTP Header中Accept-Encoding 是浏览器发给服务器,声明浏览器支持的编码类型的。
     常见的有

       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 不会区分客户端 "Accept-Encoding" 头的不同,无论客户端是否请求压缩(gzip 或 deflate),Squid 都会缓存一个对象,并且后续请求都将返回相同的对象。 - 如果第一个请求带有 "Accept-Encoding: gzip,...

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

    如果“Accept-Encoding”包含“gzip, deflate”,则表明浏览器支持Gzip和Deflate两种压缩方式。 2. **检查文件类型与压缩配置**:如果确认浏览器支持压缩,Web服务器会进一步检查请求文件的类型及其压缩配置。对于...

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

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

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

    - **设置GZIP支持**:在请求头中添加`Accept-Encoding: gzip`,告诉服务器客户端支持GZIP压缩。 - **发送请求**:调用易语言的`HTTP发送请求`函数发送请求。 - **接收响应**:获取服务器返回的响应,包括状态码、...

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

    如果`Accept-Encoding`包含“gzip”,我们就使用GZipStream;如果包含“deflate”,我们就使用DeflateStream。这两者都通过设置`Response.Filter`属性来实现,`Response.Filter`是一个流对象,我们可以将它替换为...

    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缓存重验证和...

    大华智慧园区综合管理平台存在未授权高危漏洞(0Day)及以往漏洞POC合集

    大华智慧园区综合管理平台存在未授权高危漏洞(0Day)及以往漏洞POC合集

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

    获取头名字的一个 枚举: host connection cache-control accept user-agent accept-encoding accept-language cookie 获取头文件中指定头名字的全部值的一个枚举: JSESSIONID=7278C051AADA7370A6DB7492CDD13984

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

    服务端示例展示了如何根据请求头中的accept-encoding来决定是否对响应数据进行压缩,并且通过管道输出到客户端: ```javascript const zlib = require('zlib'); const http = require('http'); const fs = require...

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

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

    如下所示: ...headers={ "Accept":"text/html,application/xhtml+xml,... "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

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

    为何要小心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

    关于Vary渲染.doc

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

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

    if ("gzip".equalsIgnoreCase(request.getHeader("Accept-Encoding"))) { response.setHeader("Content-Encoding", "gzip"); try (OutputStream out = response.getOutputStream(); GZIPOutputStream gzipOut = ...

    HTTP协议的头信息详解.pdf

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

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

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

Global site tag (gtag.js) - Google Analytics