`
liyixing1
  • 浏览: 964094 次
  • 性别: Icon_minigender_1
  • 来自: 江西上饶
社区版块
存档分类
最新评论

http压缩,Content-Encoding

阅读更多
HTTP 协议中的Content-Encoding


Accept-Encoding 和Content-Encoding是HTTP中用来对采用哪种编码格式传输正文进行协定的一对头部字段。


工作原理如下:

  • 首先浏览器(也就是客户端)发送请求时,通过Accept-Encoding带上自己支持的内容编码格式列表;
  • 服务端在接收到请求后,从中挑选出一种用来对响应信息进行编码,并通过Content-Encoding来说明服务端选定的编码信息
  • 浏览器在拿到响应正文后,依据Content-Encoding进行解压。
  • 服务端也可以返回未压缩的正文,但这种情况不允许返回Content-Encoding


Accept-Encoding: gzip
Accept-Encoding: compress
Accept-Encoding: deflate
Accept-Encoding: br
Accept-Encoding: identity
Accept-Encoding: *

// Multiple algorithms, weighted with the quality value syntax:
Accept-Encoding: deflate, gzip;q=1.0, *;q=0.5



gzip使用 Lempel-Ziv 编码( LZ77 )的压缩格式,带有32位 CRC 。

compress使用 Lempel-Ziv-Welch( LZW )算法的压缩格式。

deflate使用 zlib 结构的压缩格式,以及 deflate 压缩算法。

br使用 Brotli 算法的压缩格式。

identity指示身份功能(即不压缩,也不修改)。即使不存在,该值始终被认为是可以接受的。

*匹配尚未在标题中列出的任何内容编码。如果标题不存在,这是默认值。这并不意味着支持任何算法; 只是表示没有偏好。

;q=( q 值加权)任何值都按照称为权重的相对质量值的优先顺序排列。


Content-Encoding: gzip
Content-Encoding: compress
Content-Encoding: deflate
Content-Encoding: identity
Content-Encoding: br

// Multiple, in the order in which they were applied
Content-Encoding: gzip, identity
Content-Encoding: deflate, gzip

gzip一种使用 Lempel-Ziv 编码( LZ77 )和32位 CRC 的格式。这最初是 UNIX gzip 程序的格式。

x-gzip为了兼容性的目的,HTTP / 1.1 标准还建议支持该内容编码的服务器应该将其识别为别名。

compress使用 Lempel-Ziv-Welch( LZW )算法的格式。值名取自实施此算法的 UNIX 压缩程序。

与大多数 UNIX 发行版已经消失的压缩程序一样,目前几乎没有浏览器使用这种内容编码,部分原因是由于专利问题(已在2003年过期)。

deflate使用 deflate 压缩算法(在 RFC 1951中定义)使用 zlib 结构(在 RFC 1950中定义)。

identity指示身份功能(即不压缩,也不修改)。除非明确指定,否则此标记始终被视为可接受。

br使用 Brotli 算法的格式。



在http协议中对于压缩过的数据定义如下

发送头部
xxx: yyy
xxx: yyy
xxx: yyy
空行
某段数据压缩后的长度
这段数据

如:

HTTP/1.1 200 OK
Date: Sun, 21 Jul 2019 18:55:38 GMT
Server: Apache
Vary: Accept-Encoding
Content-Encoding: gzip
Access-Control-Allow-Origin: *
Keep-Alive: timeout=5, max=50
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html

19
   �   
分享到:
评论

相关推荐

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

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

    Http协议中关于Content-Length的解读.docx

    如果实体长度和传输长度不相等(例如设置了Transfer-Encoding),那么不能设置Content-Length。 4. 通过服务器关闭连接可以确定消息的传输长度,这种情况主要对应于短连接,即非keep-alive模式。 5. HTTP/1.1必须...

    http协议进阶之Transfer-Encoding和HttpCore实现详解

    Content-Encoding通常是对数据内容进行一些压缩编码操作,而Transfer-Encoding通常是对传输采用分块策略之类的。 Content-Length头的作用是指定待传输的内容的字节长度。如果想知道Transfer-Encoding和Content-...

    serverless-content-encoding:无服务器插件可启用内容编码以进行响应压缩

    无服务器内容编码一个无服务器... contentEncoding : minimumCompressionSize : 0 # Minimum body size required for compression in bytes minimumCompressionSize必须是大于或等于0的Integer。 如果未配置contentEnc

    文件下载response.setHeader()下载中文文件名乱码问题解决办法.pdf

    请求头用于提供客户端可以接受的数据类型、压缩方法、语言等信息,例如 Accept、Accept-Encoding、Accept-Language 等。响应头用于提供服务器的名称、认证方式、资源的新地址等信息,例如 Location、Server、...

    web容器文件压缩 tk-filter tk-filter js,jsp,css,文件压缩包含源代码

    4. 修改HTTP响应头,添加`Content-Encoding`头,指示出使用的压缩算法。 5. 将压缩后的数据写入响应流,发送到客户端。 `tk-filter` 包含源代码这一特点意味着用户可以深入理解其工作方式,根据自身项目的需求进行...

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

    同样,服务器在响应中会通过`Content-Encoding`头部告知客户端数据已被压缩,以便客户端进行解压。 3. **易语言中的网络请求**: 易语言作为一款中文编程环境,提供了丰富的网络编程接口。要实现网页GZIP压缩检测...

    brotli-webpack-plugin:准备资产的Brotli压缩版本以通过Content-Encoding提供服务:br

    该插件使用 , 或库通过压缩算法来压缩资产,通过等提供资源。 安装 npm install --save-dev brotli-webpack-plugin 用法 var BrotliPlugin = require ( 'brotli-webpack-plugin' ) ; module . exports = { ...

    【ASP.NET编程知识】ASP.NET Core中预压缩静态文件的方法步骤.docx

    headers.Add("Content-Encoding", "gzip"); headers["Content-Type"] = contentType; } } }); ``` 可以使用文件扩展名来确定文件类型,例如使用 `FileExtensionContentTypeProvider` 来获取文件类型。 ```...

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

    服务器根据请求中的信息,使用zlib模块来压缩响应内容,再通过Content-Encoding头部告知客户端实际使用了哪种压缩编码。 在Node.js中使用zlib模块,首先需要通过require函数引入模块: ```javascript const zlib =...

    MFC实现带压缩功能HTTP请求

    当服务器响应时,它可能会返回一个"Content-Encoding: gzip"头,表明响应已被GZIP压缩。此时,客户端需要解压数据,这可以通过CInternetStream或自定义的解压逻辑来完成。 **处理压缩数据** 在MFC中,可以使用zlib...

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

    ### TCP/IP-HTTP-Header-消息报头 在TCP/IP协议族中,HTTP(超文本传输协议)是一种应用层协议,用于从Web服务器传输超文本到本地浏览器的传输协议。HTTP报文由请求行、状态行、首部字段(Header)、空行以及可选的...

    开启TOMCAT6的GZIP压缩

    1. **查看HTTP响应头**:当客户端向服务器发出请求时,服务器会检查请求头中的`Accept-Encoding`字段,如果其中包含了`gzip`,则表示客户端支持接收GZIP压缩的数据。此时,服务器会返回一个带有`Content-Encoding: ...

    Gzip压缩.docx

    然后在HTTP响应头中设置`Content-Encoding: gzip`,告知客户端响应内容已被压缩。 3. 客户端接收到带有`Content-Encoding: gzip`头的响应后,会自动解压内容并正常渲染页面。 对于IIS 6.0服务器启用Gzip压缩的步骤...

    Python-gzipencoding实例如何压缩HTTP请求发送到web服务并处理

    headers = {'Content-Type': 'application/json', 'Content-Encoding': 'gzip'} response = requests.post('http://your-web-service.com/api', data=compressed_data, headers=headers) ``` 3. **处理web服务的...

    在传输层上压缩WebService的请求和响应

    服务器在接收到请求后,如果支持相应的压缩算法,会使用该算法压缩响应内容,并在`Content-Encoding`头部声明所使用的压缩方式。 对于服务器端,开发者可以配置Web服务器或应用服务器以自动对出站内容进行压缩。...

    nodejs资源压缩方式.doc

    服务器可以根据客户端发送的 `Accept-Encoding` 头部信息,决定使用 gzip 还是 deflate 压缩算法来响应请求。下面是一个简单的 Node.js HTTP 服务器示例,它根据客户端的接受编码来选择合适的压缩方式: ```...

    gzip 压缩 三种方法

    header('Content-Encoding: gzip'); ob_start('ob_gzhandler'); // 此处是你的PHP代码,例如输出HTML内容 echo '<html><body>Hello, Gzip!</body></html>'; ob_end_flush(); ``` 这段代码首先设置HTTP头声明使用...

    HTTP大文件传输方案

    - **实现方式**: 服务器检测到客户端支持某种压缩算法后,可以在响应头中加入相应的`Content-Encoding`字段,并使用相应的压缩算法对数据进行压缩后再发送。 ##### 3.3 范围请求 - **支持情况**: 大多数现代Web...

    使用php判断网页是否gzip压缩

    为了判断网页是否被GZIP压缩,我们可以检查返回的HTTP响应头中的`Content-Encoding`字段,如果值为`gzip`,那就说明网页是被GZIP压缩的。但是,如果服务器不提供这个信息,或者我们无法直接获取HTTP响应头,可以使用...

Global site tag (gtag.js) - Google Analytics