用pako.js压缩字符串,如何在后端用java解开?

背景:项目链路为腾讯clb->Ingress(nginx)->项目服务,腾讯的Ingress对header请求头最大值为256K,无法加大,由于业务配置数据增加,此问题诟病已久,于是想着压缩打请求头数据后再请求,从而解决请求头大的问题

前端为vue项目

注意:pako的版本必须为1.0.3,否则后端解不开,应该是大于此版本pako做过代码调整,并不兼容历史版本(不要问怎么知道的,我都不知道解了多少,一直提示不是gzip格式,我让前端反解析,前端发现也解不出来,后续我发现是版本问题,坑!)

代码

if (config.data?.headerContentUse) {config.headers['Content-Encoding'] = 'gzip'if (ls.get('oldDetailData')) {let gzip = pako.gzip(encodeURIComponent(JSON.stringify(ls.get('oldDetailData'))), { to: "string" });const base64 = btoa(gzip);config.headers['oldContent'] = base64}let gzip2 = pako.gzip(encodeURIComponent(JSON.stringify(data)), { to: "string" });const base642 = btoa(gzip2);config.headers['newContent'] = base642}

后端为java项目

代码

          if(StringUtils.isNotBlank(oldContent)){oldContent = this.unZip(oldContent);}if(StringUtils.isNotBlank(newContent)){newContent = this.unZip(newContent);}
    public String unZip(String content) throws IOException {byte[] gzipBytes = Base64.getDecoder().decode(content);// 使用GZIPInputStream解压缩ByteArrayInputStream bais = new ByteArrayInputStream(gzipBytes);GZIPInputStream gzis = new GZIPInputStream(bais);ByteArrayOutputStream baos = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len;while ((len = gzis.read(buffer)) > 0) {baos.write(buffer, 0, len);}gzis.close();baos.close();// 解码URL编码return URLDecoder.decode(baos.toString(), "UTF-8");}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/753771.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日五道java面试题之mybatis篇(一)

目录: 第一题. MyBatis是什么?第二题. ORM是什么?第三题. 为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?第四题. 传统JDBC开发存在的问题第五题. JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的…

python 深度学习的学习路径

一、python基础代码 1.环境安装与配置 2.变量 3.流程控制语句 4.字符串 5.列表、元组、字典 6.函数 7.面向对象:继承、封装、多态 8.文件处理、异常处理 二、数据处理常用包 1.numpy 2.pandas 3.matplotlib 三、常用框架 1.pytorch 四、理解经典网络 1…

计算机考研|北航北理北邮怎么选?

北航985,北理985,北邮211 虽然北邮事211,但是北邮的计算机实力一点也不弱,学科评级,计算机是A 北航计算机评级也是A,北理的计算机评级是A- 所以,这三所学校在实力上来说,真的大差…

LeetCode 面试经典150题 274.H指数

题目: 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她…

DM数据库安装(Linux)

Linux安装 操作系统CPU数据库CentOS7x86_64 架构dm8_20230418_x86_rh6_64 先把压缩包扔过去 新建 dmdba 用户 创建用户所在的组,命令如下: groupadd dinstall 创建用户,命令如下: useradd -g dinstall -m -d /home/dmdba -s /…

由浅到深认识C语言(13):共用体

该文章Github地址:https://github.com/AntonyCheng/c-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.csdn…

ConKI: Contrastive Knowledge Injection for Multimodal Sentiment Analysis

文章目录 ConKI:用于多模态情感分析的对比知识注入文章信息研究目的研究内容研究方法1.总体结构2.Encoding with Knowledge Injection2.1 Pan-knowledge representations2.2 Knowledge-specific representations 3.Hierarchical Contrastive Learning4.损失函数5.训…

信息检索(十四):Simple Entity-Centric Questions Challenge Dense Retrievers

Simple Entity-Centric Questions Challenge Dense Retrievers 摘要1. 引言2. 背景和相关工作3. EntityQuestions4. 剖析问题:实体 vs 问题模式4.1 密集检索表现出流行偏差4.2 观察问题有助于泛化 5. 迈向稳健的密集检索6. 结论 原文链接:https://aclant…

一文教会你SpringBoot是如何启动的

SpringBoot启动流程分析 流程图 源码剖析 运行Application.run()方法 我们在创建好一个 SpringBoot 程序之后,肯定会包含一个类:xxxApplication,我们也是通过这个类来启动我们的程序的(梦开始的地方),而…

从零开始学HCIA之SDN04

1、VXLAN数据封装 (1)Original L2 Frame,原始以太网报文,业务应用的以太网帧。 (2)VXLAN Header,VXLAN协议新定义的VXLAN头,长度为8字节。VXLAN ID(VNI)为2…

Unity 地图数据生成

在游戏开发中,地图是一个非常重要的元素,它可以影响游戏的玩法、视觉效果和整体体验。在Unity中,生成地图数据是一个常见的任务,它可以用于创建随机地图、关卡设计和其他一些应用场景。在本文中,我们将探讨如何使用Uni…

【趣味项目】命令行图片格式转换器

【趣味项目】一键生成LICENSE 项目地址:GitHub 项目介绍 一款命令行内可以批量修改图片格式的工具 使用方式 npm install xxhls/image-transformer -gimg-t --name.*.tiff --targetpng --path./images --recursiontrue技术选型 typeScript: 支持类型体操chal…

【网络安全】 MSF生成木马教程

本文章仅用于信息安全学习,请遵守相关法律法规,严禁用于非法途径。若读者因此作出任何危害网络安全的行为,后果自负,与作者无关。 环境准备: 名称系统位数IP攻击机Kali Linux6410.3.0.231客户端Windows 76410.3.0.234…

Python中的迭代器与生成器提高性能的秘密武器【第143篇—迭代器与生成器】

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Python中的迭代器与生成器:提高性能的秘密武器 在Python编程中,迭代…

网络安全等保测评指标一览表

什么是等保? 等保是指对国家重要信息、法人和其他组织及公民的专有信息以及公开信息和存储、传输、处理这些信息的信息系统分等级实行安全保护,对信息系统中使用的信息安全产品实行按等级管理,对信息系统中发生的信息安全事件分等级响应、处…

关于SRE

SRE(Site Reliability Engineering)是一种由Google提出的运维工程师团队的方法论。SRE的目标是通过将软件工程的原则和实践应用于运维工作,来提高系统的可靠性和可扩展性。SRE强调自动化、监控、故障处理和容量规划等方面的工作,以…

[TJOI2010] 阅读理解 **STL**Tire树**

[TJOI2010] 阅读理解 题目链接: https://www.luogu.com.cn/problem/P3879 题目描述 思路1 (STL大法) 对每个单词,用map来映射存储它所在的短文编号 用set的好处: -------1. 存储直接自动排序,操作简单&…

python 通过 ast 替换代码

导航目录 目录结构要替换的代码替换代码的逻辑新建类,继承 ast运行新建的类最最重要的一步replace_code.py 完整代码 main.py 里面的代码执行结果 最后 目录结构 . ├── hello │ ├── __init__.py │ └── utils.py ├── main.py ├── replace_code…

【开源】SpringBoot框架开发毕业生追踪系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 登陆注册模块2.2 学生基本配置模块2.3 就业状况模块2.4 学历深造模块2.5 信息汇总分析模块2.6 校友论坛模块 三、系统设计3.1 用例设计3.2 实体设计 四、系统展示五、核心代码5.1 查询我的就业状况5.2 初始化就业状况5.…

2024.3.18-408学习笔记-C-结构体

1、结构体 结构体是一种自定义类型。 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。 2、结构体的声明 struct Student {char name[20];//名字int age;//年龄char sex[5];//性别char id[20];//学号 };//分号不能丢以上声明的结构…