axios使用sm2加密数据后请求参数多了双引号解决方法

axios使用sm2加密数据后请求参数多了双引号解决

  • 背景
  • 问题描述
    • 解决过程

背景

因项目安全要求,需对传给后端的入参加密,将请求参数加密后再传给后端
前期将axios降低到1.6.7后解决了问题,但最近axios有漏洞,安全要求对版本升级,问题需要继续解决。
果然,技术栈不解决迟早会有问题。。。

问题描述

升到稳定版本后,在浏览器网络请求参数上发现加密后的参数加上了双引号
在这里插入图片描述
后端的日志也能看出来多了双引号,导致后端解密失败
在这里插入图片描述

正常的请求参数是不带双引号的
在这里插入图片描述

解决过程

  1. 一开始想将content-type转为text传给后端,但是此路不通,会导致后端无法接收参数,只能传json格式
Content-Type: application/json
  1. 那就转换思路,看axios是在什么地方将字符串添加了双引号的,于是在github上找到下面代码,解决问题
    代码段来自于别人的提交记录,亲测有效
const instance = axios.create({transformRequest: function transformRequest(data, headers) {// doesn't apply the default transformRequest if the data is a string, so that axios doesn't add quotes see :// https://github.com/usebruno/bruno/issues/2043// https://github.com/axios/axios/issues/4034const hasJSONContentType = () => {const contentType = (headers && headers['Content-Type']) || '';return contentType.indexOf('application/json') > -1;};if (typeof data === 'string' && hasJSONContentType()) {return data;}axios.defaults.transformRequest.forEach((tr) => tr(data, headers));}});

相关细节可查看
https://github.com/axios/axios/issues/4034
https://github.com/usebruno/bruno/pull/2449

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

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

相关文章

从零开始[进阶版]深入学习图像分类:使用Python和TensorFlow

引言 图像分类是计算机视觉中的一个核心任务,广泛应用于人脸识别、自动驾驶、医疗影像分析等领域。在本篇文章中,我们将深入探讨图像分类的原理和实现,使用Python和TensorFlow搭建一个完整的图像分类系统。本文不仅适合初学者,也…

【Qt 初识 Test】用图形化和代码的方式实现简单的Qt程序

文章目录 1. 通过图形化的方式实现🍎2. 通过代码的方式实现 1. 通过图形化的方式实现🍎 在界面创建出一个控件,显示 hello world,通过拖拽的方式实现; widget.ui文件如下:🔍 生成的 ui_widget.…

生物环保技术有哪些缺点或者局限性呢

生物环保技术,作为一种利用生物学原理和技术来处理环境污染的方法,虽然具有绿色环保、高效节能等优点,但也存在一些缺点和局限性。以下是对这些缺点和局限性的详细分析: 一、受环境因素影响大 生物环保技术的效果往往受到环境因…

数据结构第18节 散列表 - 应用

散列表(Hash Table),也被称为哈希表,是一种数据结构,它通过使用哈希函数将键映射到数组的某个位置来实现快速查找。散列表通常提供平均时间复杂度为O(1)的查找、插入和删除操作,这使得它们在处理大量数据时…

【mybatis】mybatisX插件概述

一、主要功能 智能补全与提示 MyBatisX 可以智能地提示和补全 SQL 语句中的关键字、表名、列名等信息,从而显著提高开发效率。代码生成器 虽然 MyBatisX 本身可能不直接提供一个完整的、独立的代码生成器,但它可能集成了或支持与其他代码生成工具&#…

卤味江湖中,周黑鸭究竟该抓住什么赛点?

近年来,卤味江湖的决斗从未停止。 随着休闲卤味、佐餐卤味等细分赛道逐渐形成,“卤味三巨头”(周黑鸭、绝味食品、煌上煌)的牌桌上有了更多新对手,赛道变挤了,“周黑鸭们”也到了转型关键期。 这个夏天&a…

MySQL字符串相关数据处理函数

目录 1. 转大小写 2. 截取字符串 sunstr 3. 获取字符长度 4. 字符串拼接 concat 5. 去掉空白 trim 1. 转大小写 转大写:upper() 转小写:lower() 虽然MySQL不严格区分大小写,但是我们还是需要掌握这种大小写的操作以方便学习其他…

python的入门知识(下)

目录 学习内容数字字符串、列表和元组映射和集合类型 学习内容 数字 长整型(Long Integer): 在Python中,整数没有大小限制,但是可以用大写或小写的L来表示长整型,尽管这不是Python 3推荐的做法。 复数(Co…

Nessus相关

tenable 1 安装nessus scanner 1 )安装nessus scanner: 方法一 curl -H X-Key: xxxxx https://cloud.tenable.com/install/scanner?namescanner-name&groupsscanner-group | bash方法二: **# for ubuntu, its https://www.tenable.com/downloads/api/v1/pu…

【JavaScript脚本宇宙】JavaScript 库概览:数字、货币值、日期时间处理一网打尽

简化数据处理:掌握六大 JavaScript 库的核心功能和使用技巧 前言 在现代的软件开发中,处理数字、货币和日期时间是非常常见的需求。为了简化这些任务,开发人员可以使用各种 JavaScript 库来轻松地进行数字格式化、货币计算和日期时间操作。…

Google登录时人机身份验证的图片类型和通过的经验建议,以及一些常见问题

很多朋友在登录谷歌账号时,都遇到过要求人机身份验证的步骤,而且有一些时候人机身份验证这个步骤很让人纠结,甚至压根就出不来具体的验证图片,或者花了十几分钟、几十分钟都过不去。 所以今天GG账号服务就来为您解析一下谷歌登录…

初学SpringMVC之接收请求参数及数据回显

pom.xml 文件导入 lombok 的依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.34</version></dependency> Controller 表示这是一个控制器 RequestParam 表示从前端接收…

夏日智启:我的Datawhale AI夏令营探索之旅

前言 最近几年&#xff0c;AI&#xff08;人工智能&#xff09;的发展呈现出了前所未有的迅猛势头&#xff0c;其影响力和应用范围不断扩大&#xff0c;深刻地改变着我们的生活、工作和社会结构。尤其是AI大模型技术&#xff0c;国内外可谓是“百模大战”&#xff0c;百舸争流…

github恢复码怎么备份

https://docs.github.com/zh/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication-recovery-methods

最强文本编辑器 VIM 指令大全

Vim 是从 Vi 编辑器发展出来的一款极其强大的文本编辑器&#xff0c;它保留了 Vi 编辑器的所有功能&#xff0c;并添加了许多新特性。Vim 具有代码补全、语法高亮、错误跳转、批量化处理等编辑功能&#xff0c;还支持异常丰富的插件扩展&#xff0c;且整个编辑全程可通过键盘完…

谷歌插件之一键关闭同域名页面

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 &#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 谷歌插件之一键关闭同域名页面 前言项目结构mainfest.jsonbackgroud.js 项目实现效果展示展望 前…

13019.CUDA问题积累

文章目录 1 内存不断增长的问题1.1 主机从GPU拷贝内存1.1.1 htop 内存增长到一定阶段后&#xff0c;保持稳定 1.2 GPU拷贝到Host修改之后内存稳定无变化1.3 结论 2 主机与GPU数据拷贝方案2.1 cudaMemcpy 拷贝内存2.2 cudaMemcpyAsync 异步数据拷贝2.3 采用多线程拷贝技术2.3.1 …

群主必学!轻松Get如何解散微信群的技巧

作为一个微信群的群主&#xff0c;解散群聊可能是你需要掌握的重要技能之一。不管是因为群聊的目的已经达成&#xff0c;还是因为群成员过少或不活跃&#xff0c;了解如何解散微信群都能帮助你更好地管理你的群聊。 如何解散微信群&#xff1f;本文将为您提供一些简单易行的技…

代码随想录算法训练营第五十天| 739. 每日温度、496.下一个更大元素 I、503.下一个更大元素II

739. 每日温度 题目链接&#xff1a; 739. 每日温度 文档讲解&#xff1a;代码随想录 状态&#xff1a;不会 思路&#xff1a; 这道题需要找到下一个更大元素。 使用栈来存储未找到更高温度的下标&#xff0c;那么栈中的下标对应的温度从栈底到栈顶是递减的。这意味着&#xff…

Redis数据同步

文章简单介绍基于redis-shake的redis数据同步&#xff0c;该工具基于每个节点同步数据&#xff0c;即每个主节点需同步一次&#xff0c;才能完成整个redis集群的数据同步。 1、redis节点操作 ### 查看redis版本 ./bin/redis-server --version### 登录redis ./bin/redis-cli -…