通过七牛云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传输 +号变 空格 问题解决相关推荐

  1. base64码通过http传输 +号变 空格 以及 图片编码后字符串较长导致POST提交失败 问题解决...

    场景:图片上传OSS存储,接口拿字符串去接前端传的base64码,服务器打印入参传的值,发现和前端打印的值有所区别,服务器中打印的值所有+号全部变成空格. 解决办法: Java中使用:url = ur ...

  2. java +号变空格_base64码通过http传输 +号变 空格 问题解决

    通过七牛云base64上传图片,通过官方示例上传成功后,根据示例改了一个controller. 通过前端往后端传base64码形式进行测试.死活不通过,七牛报400. 仔细排查后发现,示例转换的bas ...

  3. 解决base64通过http传输后+变空格的问题

    解决base64通过http传输后+变空格的问题 参考文章: (1)解决base64通过http传输后+变空格的问题 (2)https://www.cnblogs.com/zwsblogs/p/918 ...

  4. Vue+Springboot上传图片将 Base64 码转换为图片保存在指定文件夹

    Vue+Springboot上传图片将 Base64 码转换为图片保存在指定文件夹 前言 一.Vue 前端 一.五 注意!!! 二.Springboot 后端 引入Base64依赖 在项目里新建 ut ...

  5. Base64编码详解及其变种(解决加号在URL变空格问题)

    Base64编码详解及其变种(解决加号在URL变空格问题) 参考文章: (1)Base64编码详解及其变种(解决加号在URL变空格问题) (2)https://www.cnblogs.com/life ...

  6. 后端存储Base64码传输的图片

    在项目中,上传图片时,我们可以 采用Base64存储的方式,在后端直接接受前端传入的Base64码,然后转为图片,存储到服务器 Base64码的组成大概是这样的:图片格式;base64,图片内容 所以 ...

  7. 关于css中“点“,“井号“,“逗号“,“空格“,“冒号“的用法

    详解css中"点","井号","逗号","空格","冒号"的用法_三级小野怪的专栏-CSDN博客bo ...

  8. 网页上的base64码太长?科普base64到底是啥

    一.前言 书接上回,上次是通过返回base64码给前端页面,实现了我们访问项目外图片的目的.只是代码实在是太长了,不好看啊,得想办法优化下.顺带了解下base64到底是啥,用着好不好,会不会影响速度呢 ...

  9. pythonの鉴黄之路(二)——图片转base64码

    上篇博客的YCbCr鉴黄有些过于浮夸 http://blog.csdn.net/sm9sun/article/details/53319959 于是经过慎重决定,我们打算采取调用外部成熟的接口来完成鉴 ...

  10. SAP-FI章<<<<第三节:添加税码设置>>>>添加税码的特殊传输方式:100配置传输至800

    SAP-FI章<<<<第三节:添加税码设置>>>> 使用背景,FTXP添加税码的特殊传输方式:100配置传输至800** 说明:系统适用版本S4CORE ...

最新文章

  1. 继承实现的原理、子类中调用父类的方法、封装
  2. Android镜像文件的拆解
  3. 各模组相关interface
  4. 中国航天将与人工智能技术携手 未来可期
  5. pandas 转化np数据_利用Python进行数据分析(语法篇)
  6. 拓端tecdat|R语言 PCA(主成分分析),CA(对应分析)夫妻职业差异和马赛克图可视化
  7. 【Java线程池实现原理及其在美团业务中的实践】
  8. USB有线网卡怎么用
  9. Win系统 - N卡如何组建三联屏?
  10. Linux上 如何查找yum安装包所缺缺少的依赖包及报错处理
  11. rand()和rand_r()的区别
  12. 阿里云服务器升级配置教程(升级实例、配置、带宽、购买并挂载硬盘)
  13. 萤石 python获取直播地址和画面
  14. 【windows 壁纸】
  15. 求助!微信公众号页面部分手机加载后空白!
  16. three.js判断两个向量(角度)夹角误差是否小于某个值
  17. 【2019/09/16】关于固态硬盘你不得不知道的那些事
  18. python自带的函数有哪些_内置函数 python自带的函数
  19. linux解压tar后缀的包,解压tar包的linux命令的详细说明
  20. Excel快速对齐表格的中姓名(两个字姓名和三个字姓名对齐)

热门文章

  1. 虾皮的注册流程是什么?怎么注册虾皮?
  2. 转载:软件工程师的视角看网络(网络那点事)
  3. Python Pymysql实现数据存储
  4. ColdFusion CGI or Application variables
  5. 解决登录vCenter提示“当前网站安全证书不受信任“
  6. poco http使用
  7. win10 + ubantu双系统 彻底删除Ubantu
  8. Liunx官网下载步骤
  9. 2022年中式面点师(中级)复训题库及模拟考试
  10. Python获取高德POI(关键词搜索法)