uniapp开启数据压缩的坑-SpringBoot-gzip

1、服务器配置

服务端开启的数据压缩配置

server:
  port: ${port:8881}
  servlet:
    # 应用上下文路径
    context-path: /orderserver
  undertow:
    threads:
      io: 4
      worker: 500
    buffer-size: 2048
  # 开启Gzip压缩,
  compression:
    # 开启压缩
    enabled: true
    # 对json格式内容进行压缩
    mime-types: application/json
    # 响应体超过5KB需要进行压缩---默认只压缩超过2KB的数据
    min-response-size: 5120

2、uniapp的请求公共函数请求头

	let HEADER= {
		"Accept-Encoding": "gzip", 
        "content-type":
          method == "POST"
            ? "application/json;charset=UTF-8"
            : "application/json",
        token: uni.getStorageSync("userInfo").token
      }

3、压缩数据无法解析

在使用postman和jmeter进行测试的时候,都需要在请求头上添加"Accept-Encoding": "gzip",数据解压无误,数据都能完成自动解压,但是在uniapp的请求头上添加这个请求头,请求内容中的data是Unicode和其他编码的一个混合体,可以看到内容编码是gzip,当时

4、解压

当时只以为需要进行手动解压,但是使用pako进行gizp解压无效,还是更换axios请求框架需要更换请求适配器,无法完成解压

5、解决方案

去掉请求头"Accept-Encoding": "gzip",当时只以为不加这个请求头,服务端的响应数据不是压缩的,但是在服务端打印请求头的时候,发现前端请求头中自带"Accept-Encoding": "gzip",因此uniapp的请求的底层实现会自动解压

6、总结

1、uniapp的请求中的"Accept-Encoding": "gzip"为请求自带配置,不可修改与覆盖

2、既然uniapp的原生请求头中的"Accept-Encoding": "gzip"不可修改与覆盖,且请求头中的数据压缩格式只有 gzip,那么服务器的gzip, deflate, br这个三种压缩格式应该是只支持gzip一种,另外几种大概率不支持

3、拓展:服务器 数据压缩可以将响应json数据压缩成字符,放在响应的data中,客户端需要根据后端的压缩方式进行对应解压,此方案也可以用于客户端对请求数据进行压缩,服务器根据对应压缩方案实现一个对应的解压工具进行解压

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值