base64码通过http传输 +号变 空格 问题解决
通过七牛云base64上传图片,通过官方示例上传成功后,根据示例改了一个controller。
通过前端往后端传base64码形式进行测试。死活不通过,七牛报400。
仔细排查后发现,示例转换的base64码与前端传来的base64码稍有区别,
前端通过post传入的base64码将 “+” 号改成了 空格 。
网上解决方案
前台处理 :java方法:URLEncoder.encode(str,"UTF-8");js 方法encodeURIComponent(str);
后台处理:URLDecoder.decode(str,"UTF-8");
经测试,编码形式 会改变一些其他字符,例如 “=”变成了“%3D”
解决方案。
一、JAVA 后端对字符串进行替换
url = url.replaceAll(" ","+");
经过测试,成功。
或者是,前端通过请求头方式去控制。
- base64加密参数Http传输
base64中,加号(+)是base64编码的一部分,如果将+号转变为空格,就会导致解密失败。
现在应该很清楚为什么base64后,通过http请求后,数据丢失的原因了吧。
1、Base64加密后的数据:
gLi5lSf1FW+r1nuhjheOlA2vYlbt1U9kOKnGPPG/LZU+J7qlqUSckCtGfRiQkkqgfZHwEGaBZkpGWuIyZ+tCegU8xj85Xp7bG3Fyfd6k=
在对Base64加密进行http传输时,后台收到的数据会出现空格的现象。如下
gLi5lSf1FW r1nuhjheOlA2vYlbt1U9kOKnGPPG/LZU J7qlqUSckCtGfRiQkkqgfZHwEGaBZkpGWuIyZ tCegU8xj85Xp7bG3Fyfd6k=
这就导致传输的数据和接收的数据不一致,导致解密失败
2、base64 http请求,如何将+号进行urlEncode
设置http请求头(对参数进行urlEncode操作)
Content-Type: application/x-www-form-urlencoded
3、Base64 urlEncode后:
gLi5lSf1FW%2r1nuhjheOlA2vYlbt1U9kOKnGPPG/LZU%2J7qlqUSckCtGfRiQkkqgfZHwEGaBZkpGWuIyZ%2tCegU8xj85Xp7bG3Fyfd6k=
4、后台接收的数据:
gLi5lSf1FW+r1nuhjheOlA2vYlbt1U9kOKnGPPG/LZU+J7qlqUSckCtGfRiQkkqgfZHwEGaBZkpGWuIyZ+tCegU8xj85Xp7bG3Fyfd6k=
这时,接收的base64数据和传输的是结果一致,可以正常解密了。
- 什么是:application/x-www-form-urlencoded
简单的讲就是form表单提交。
浏览器会对form表单的数据进行url编码,把form数据转换成一个字串(name1=value1&name2=value2…),然后把这个字串append到url后面,用?分割,加载这个新的url
如果表单有加号(+),url编码后会变为%2,这时后接收数据后,对参数解码后转变为+号
如果表单有空格,url编码后会变为+,后台接收数据化,解码变为空格。
转自: https://www.cnblogs.com/jpfss/p/10037984.html
base64码通过http传输 +号变 空格 问题解决相关推荐
- base64码通过http传输 +号变 空格 以及 图片编码后字符串较长导致POST提交失败 问题解决...
场景:图片上传OSS存储,接口拿字符串去接前端传的base64码,服务器打印入参传的值,发现和前端打印的值有所区别,服务器中打印的值所有+号全部变成空格. 解决办法: Java中使用:url = ur ...
- java +号变空格_base64码通过http传输 +号变 空格 问题解决
通过七牛云base64上传图片,通过官方示例上传成功后,根据示例改了一个controller. 通过前端往后端传base64码形式进行测试.死活不通过,七牛报400. 仔细排查后发现,示例转换的bas ...
- 解决base64通过http传输后+变空格的问题
解决base64通过http传输后+变空格的问题 参考文章: (1)解决base64通过http传输后+变空格的问题 (2)https://www.cnblogs.com/zwsblogs/p/918 ...
- Vue+Springboot上传图片将 Base64 码转换为图片保存在指定文件夹
Vue+Springboot上传图片将 Base64 码转换为图片保存在指定文件夹 前言 一.Vue 前端 一.五 注意!!! 二.Springboot 后端 引入Base64依赖 在项目里新建 ut ...
- Base64编码详解及其变种(解决加号在URL变空格问题)
Base64编码详解及其变种(解决加号在URL变空格问题) 参考文章: (1)Base64编码详解及其变种(解决加号在URL变空格问题) (2)https://www.cnblogs.com/life ...
- 后端存储Base64码传输的图片
在项目中,上传图片时,我们可以 采用Base64存储的方式,在后端直接接受前端传入的Base64码,然后转为图片,存储到服务器 Base64码的组成大概是这样的:图片格式;base64,图片内容 所以 ...
- 关于css中“点“,“井号“,“逗号“,“空格“,“冒号“的用法
详解css中"点","井号","逗号","空格","冒号"的用法_三级小野怪的专栏-CSDN博客bo ...
- 网页上的base64码太长?科普base64到底是啥
一.前言 书接上回,上次是通过返回base64码给前端页面,实现了我们访问项目外图片的目的.只是代码实在是太长了,不好看啊,得想办法优化下.顺带了解下base64到底是啥,用着好不好,会不会影响速度呢 ...
- pythonの鉴黄之路(二)——图片转base64码
上篇博客的YCbCr鉴黄有些过于浮夸 http://blog.csdn.net/sm9sun/article/details/53319959 于是经过慎重决定,我们打算采取调用外部成熟的接口来完成鉴 ...
- SAP-FI章<<<<第三节:添加税码设置>>>>添加税码的特殊传输方式:100配置传输至800
SAP-FI章<<<<第三节:添加税码设置>>>> 使用背景,FTXP添加税码的特殊传输方式:100配置传输至800** 说明:系统适用版本S4CORE ...
最新文章
- 继承实现的原理、子类中调用父类的方法、封装
- Android镜像文件的拆解
- 各模组相关interface
- 中国航天将与人工智能技术携手 未来可期
- pandas 转化np数据_利用Python进行数据分析(语法篇)
- 拓端tecdat|R语言 PCA(主成分分析),CA(对应分析)夫妻职业差异和马赛克图可视化
- 【Java线程池实现原理及其在美团业务中的实践】
- USB有线网卡怎么用
- Win系统 - N卡如何组建三联屏?
- Linux上 如何查找yum安装包所缺缺少的依赖包及报错处理
- rand()和rand_r()的区别
- 阿里云服务器升级配置教程(升级实例、配置、带宽、购买并挂载硬盘)
- 萤石 python获取直播地址和画面
- 【windows 壁纸】
- 求助!微信公众号页面部分手机加载后空白!
- three.js判断两个向量(角度)夹角误差是否小于某个值
- 【2019/09/16】关于固态硬盘你不得不知道的那些事
- python自带的函数有哪些_内置函数 python自带的函数
- linux解压tar后缀的包,解压tar包的linux命令的详细说明
- Excel快速对齐表格的中姓名(两个字姓名和三个字姓名对齐)