学习
实践
活动
工具
TVP
写文章

## HTTP系列之Accept-Encoding和Content-Encoding

前端的性能优化是一个永不停歇的路程,优化的方式也不一而足,今天重点不在于介绍性能优化,而是介绍性能优化的其中一种方式,通过压缩来节省http请求的流量,实现过程中依赖http中header部分的两个字段,Accept-Encoding 首先我们先了解下Accept-Encoding和Content-Encoding的作用。 含义与作用 为什么首先要讲这两个字段的含义呢? 所以request请求header里的Accept-Encoding就是用来告诉服务端客户端是支持哪些编码方式的,一般的值有gzip/compress/deflate/br等,可以多个,中间用逗号隔开。 如: Accept-Encoding: gzip, deflate, br 复制代码 当服务端接收到请求,并且从header里拿到编码标识时,就可以选择其中一种方式来进行编码压缩,然后返给客户端,但是如果 综上,Accept-Encoding用来标识客户端能够理解的内容编码方式。 Content-Encoding用来标识主体进行了何种方式的内容编码转换。

8230

requests请求时,遇到的Accept-Encoding问题

在使用requests请求链接的时候,发现请求得到的内容总是一堆乱码: 此时请求的headers里的Accept-Encoding是这样写的: headers = { 'Accept-Encoding 当把Accept-Encoding里的gzip去掉后,才能得到正确的内容。 这里是因为压缩算法的原因,具体可参考:Accept-Encoding 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159689.html原文链接:https://

6810
  • 广告
    关闭

    年末·限时回馈

    热卖云产品年终特惠,2核2G轻量应用服务器6.58元/月起,更多上云必备产品助力您轻松上云

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    HTTP中的Accept-Encoding、Content-Encoding、Transfer-Encoding、Content-Type

    Accept-Encoding和Content-Encoding Accept-Encoding和Content-Encoding是HTTP中用来对采用何种压缩格式传输正文进行协定的一对header。 工作原理如下: 浏览器发送请求,通过Accept-Encoding带上自己支持的内容编码格式列表 服务端从中挑选一个用来对正文进行编码,并通过Content-Encoding响应头指明响应编码格式。

    7720

    2018-09-28 curl请求返回乱码怎么办 Accept-Encoding:gzip

    how-to-properly-handle-a-gzipped-page-when-using-curl curl -X GET -H "Host:www.baidu.com" -H "Connection:Keep-Alive" -H "Accept-Encoding http://www.baidu.com/" curl --compressed -X GET -H "Host:www.baidu.com" -H "Connection:Keep-Alive" -H "Accept-Encoding

    1.2K20

    OkHttp接受response返回的gzip压缩数据时的坑

    公众号:知识浅谈 众所周知,在 HTTP 传输时是支持 gzip 压缩的,客户端发起请求时在请求头里增加 Accept-Encoding: gzip,服务端响应时在返回的头信息里增加 Content-Encoding 重点来了,但是有时候我们可能会在代码中加上Accept-Encoding: gzip 就是因为加了这个请求头,问题就来了,打印出来的响应信息是乱码,去掉请求头中的accept-encoding就ok了 的话,会自动进行解压,但是当我们添加了请求头就不自动解压了,具体代码如下 //如果返回的头信息里Content-Encoding = gzip,并且我们没有手动在请求头信息里设置 Accept-Encoding ("Range") == null) { //如果我们没有在请求头信息里增加Accept-Encoding,在这里会自动设置头信息 Accept-Encoding = gzip transparentGzip = true; requestBuilder.header("Accept-Encoding", "gzip"); } List<Cookie

    79010

    客户端禁用Keep-Alive, 服务端开启Keep-Alive,会怎么样?

    receive a request from: 10.22.34.48:54722 map[Accept-Encoding:[gzip] Connection:[close] User-Agent:[Go-http-client /1.1]] receive a request from: 10.22.34.48:54724 map[Accept-Encoding:[gzip] Connection:[close] User-Agent :[Go-http-client/1.1]] receive a request from: 10.22.34.48:54726 map[Accept-Encoding:[gzip] Connection :[close] User-Agent:[Go-http-client/1.1]] receive a request from: 10.22.34.48:54728 map[Accept-Encoding ] Connection:[close] User-Agent:[Go-http-client/1.1]] receive a request from: 10.22.34.48:54731 map[Accept-Encoding

    17010

    okhttp——BridgeInterceptor

    var transparentGzip = false if (userRequest.header("Accept-Encoding") == null && userRequest.header ("Range") == null) { transparentGzip = true requestBuilder.header("Accept-Encoding", "gzip gzip // If we add an "Accept-Encoding: gzip" header field we're responsible for also decompressing ("Range") == null) { transparentGzip = true requestBuilder.header("Accept-Encoding", "gzip ") } 如果用户没有指定Accept-Encoding,且请求没有带Range字段时,可以自动转换为gzip。

    91330

    OkHttp透明压缩,收获性能10倍,外加故障一枚

    OkHttp在发送请求的时候,会自动加入gzip请求头Accept-Encoding:gzip。 (Accept-Encoding和Content-Encoding是一对请求头,分别对应着请求和返回) 为什么要进行压缩呢?因为它能大幅减少传输的容量。 具体代码如下,当判断没有Accept-Encoding头的时候,就自行加入一个。 // If we add an "Accept-Encoding: gzip" header field we're responsible for also decompressing // the ", "gzip"); 也就是手动设置了Accept-Encoding头信息。

    1.4K10

    接口自动化项目落地之HTTPBin网站

    like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'Referer': 'http://httpbin.org/', 'Accept-Encoding like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'Referer': 'http://httpbin.org/', 'Accept-Encoding Safari/537.36', 'Origin': 'http://httpbin.org', 'Referer': 'http://httpbin.org/', 'Accept-Encoding like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'Referer': 'http://httpbin.org/', 'Accept-Encoding like Gecko) Chrome/98.0.4758.109 Safari/537.36', 'Referer': 'http://httpbin.org/', 'Accept-Encoding

    12220

    Node基础:资源压缩之zlib

    浏览器通过HTTP请求头部里加上Accept-Encoding,告诉服务器,“你可以用gzip,或者defalte算法压缩资源”。 Accept-Encoding:gzip, deflate 那么,在nodejs里,是如何对资源进行压缩的呢?答案就是Zlib模块。 首先判断 是否包含 accept-encoding 首部,且值为gzip。 否:返回未压缩的文件。 是:返回gzip压缩后的文件。 fileForGzip.html'; var server = http.createServer(function(req, res){ var acceptEncoding = req.headers['accept-encoding hello world'; var server = http.createServer(function(req, res){ var acceptEncoding = req.headers['accept-encoding

    26620

    Node基础:资源压缩之zlib

    浏览器通过HTTP请求头部里加上Accept-Encoding,告诉服务器,“你可以用gzip,或者defalte算法压缩资源”。 Accept-Encoding:gzip, deflate 那么,在nodejs里,是如何对资源进行压缩的呢?答案就是Zlib模块。 首先判断 是否包含 accept-encoding 首部,且值为gzip。 否:返回未压缩的文件。 是:返回gzip压缩后的文件。 fileForGzip.html'; var server = http.createServer(function(req, res){    var acceptEncoding = req.headers['accept-encoding hello world'; var server = http.createServer(function(req, res){    var acceptEncoding = req.headers['accept-encoding

    9010

    PHPStudy后门事件分析

    构造HTTP头,把Accept-Encoding改成Accept-Encoding: gzip,deflate可以触发第一个部分。 Accept-Encoding: gzip,deflate Accept-Charset:cHJpbnRmKG1kNSgzMzMpKTs= …. 构造HTTP头,把Accept-Encoding改成Accept-Encoding: compress,gzip可以触发第二部分。 Accept-Encoding:compress,gzip …. ? 图2:第1部分流程判断代码 ? 图3:第2部分流程判断代码 这一部分有两处会执行zend_eval_strings函数代码的位置。 使用burpsuite,构造Accept-Encoding的内容。发包后可以动态调试。建立触发点的虚拟机快照后可以反复跟踪调试得到最终可利用的payload。 ?

    80220

    Node基础:资源压缩之zlib

    浏览器通过HTTP请求头部里加上Accept-Encoding,告诉服务器,“你可以用gzip,或者defalte算法压缩资源”。 Accept-Encoding:gzip, deflate 那么,在nodejs里,是如何对资源进行压缩的呢?答案就是Zlib模块。 首先判断 是否包含 accept-encoding 首部,且值为gzip。 否:返回未压缩的文件。 是:返回gzip压缩后的文件。 fileForGzip.html'; var server = http.createServer(function(req, res){ var acceptEncoding = req.headers['accept-encoding hello world'; var server = http.createServer(function(req, res){ var acceptEncoding = req.headers['accept-encoding

    78280

    JavaWeb(四)EL表达式

    注意:如果头里面有“-” ,例Accept-Encoding,则要headerValues[“Accept-Encoding”])     cookie  获得cookie对象(表示一个保存了所有cookie ,则要headerValues[“Accept-Encoding”] --%> ${header["Accept-Encoding"]} <br ,则要headerValues[“Accept-Encoding”] headerValues["Accept-Encoding"]返回的是一个string[]数组,headerValues ["Accept-Encoding"][0]取出数组中的第一个值 --%> ${headerValues["Accept-Encoding"][0]} ,则要header["Accept-Encoding"]、headerValues["Accept-Encoding"]     测试cookie时,例${cookie.key}取的是cookie对象,

    68670

    走进Java接口测试之简单快速的Mock Server Moco

    Request received: GET /7d HTTP/1.1 Host: 127.0.0.1:12306 User-Agent: PostmanRuntime/7.4.0 Accept: */* Accept-Encoding Request received: GET /7d HTTP/1.1 Host: 127.0.0.1:12306 User-Agent: PostmanRuntime/7.4.0 Accept: */* Accept-Encoding Request received: GET /7d HTTP/1.1 Host: 127.0.0.1:12306 User-Agent: PostmanRuntime/7.4.0 Accept: */* Accept-Encoding /7d HTTP/1.1 Host: 127.0.0.1:12306 User-Agent: PostmanRuntime/7.4.0 Content-Length: 167 Accept: */* Accept-Encoding GET /zuozewei/7d/12345 HTTP/1.1 Host: 127.0.0.1:12306 User-Agent: PostmanRuntime/7.4.0 Accept: */* Accept-Encoding

    2.2K20

    Spring Cloud Gateway Actuator API SpEL 代码注入 (CVE-2022-22947)

    首先,发送以下请求以添加包含邪恶 SpEL 表达式的路由器: POST /actuator/gateway/routes/hacktest HTTP/1.1 Host: localhost:8080 Accept-Encoding SpEL 表达式将在此步骤中执行: POST /actuator/gateway/refresh HTTP/1.1 Host: localhost:8080 Accept-Encoding: gzip Content-Length: 0 第三,发送以下请求以检索结果: GET /actuator/gateway/routes/hacktest HTTP/1.1 Host: localhost:8080 Accept-Encoding 最后,发送一个 DELETE 请求来删除我们的恶意路由器: DELETE /actuator/gateway/routes/hacktest HTTP/1.1 Host: localhost:8080 Accept-Encoding

    22120

    一次文件读取漏洞的“危害升级”历程

    SaveXxxxxImageName=this_is_image.jpg HTTP/1.1 Host: xxxxx.com Connection: close User-Agent: Mozilla/5.0 Accept-Encoding XXXXX/Pictures&SaveXxxxxImageName= HTTP/1.1 Host: xxxxx.com Connection: close User-Agent: Mozilla/5.0 Accept-Encoding /etc/&SaveXxxxxImageName=passwd HTTP/1.1 Host: xxxxx.com Connection: close User-Agent: Mozilla/5.0 Accept-Encoding /&SaveXxxxxImageName= HTTP/1.1 Host: xxxxx.com Connection: close User-Agent: Mozilla/5.0 Accept-Encoding SaveXxxxxImageName=.bash_profile HTTP/1.1 Host: xxxxx.com Connection: close User-Agent: Mozilla/5.0 Accept-Encoding

    35420

    asp.net core 系列之Performance的 Response compression(响应压缩)

    当客户端可以处理压缩内容时,客户端必须通过发送请求头上的Accept-Encoding 通知服务器它的能力。 中间件使用这个信息来选择provider,在请求的Accept-Encoding 头上的列表的基础上。 在示例项目上,客户端提交请求,带有Accept-Encoding: mycustomcompression头。 为了指导客户端和代理(client and proxy)缓存多个存在的版本,并且存储,Vary 头是被加到Accept-Encoding 值。 头被移除了, Accept-Encoding头的移除阻止了中间件压缩响应。

    44010

    中间人恶搞替换图片

    servce apache2 start image.png 三:编写攻击脚本 if (ip.proto == TCP && tcp.dst == 80) { if (search(DATA.data, "Accept-Encoding ")) { replace("Accept-Encoding", "Accept-Rubbish!") ; #note: replacement string is same length as original string #msg("zapped Accept-Encoding!

    16310

    扫码关注腾讯云开发者

    领取腾讯云代金券