排查问题-输出pojo日志,尽量用json
2024-09-08 18:27:34
背景:
下午在做一个前后端md5加密签名校验.
前端用参数A,B,C,经过MD5加密函数,得到签名D.
然后前端带着ABCD一块来到后端.
同样的,后端拿到请求后,用MD5函数对ABC进行加密,得到签名E.
然后对比D和E,如果相等,证明签名没有问题.
问题:
经过数次论证,在相同的条件下(相同的参数,相同的加密函数),D和E始终不相等.
但是前端的ABC三个参数,手动使用test方法,放在后端的MD5加密工具类util里面来执行,得到签名F.
签名F和签名D相等,但是签名D和签名E不等. 也就是前端加密和工具类加密相同,但是前端加密和后端流程性加密不同.
这就很奇葩.有几个可能都会导致这种情况发生.
分析:
遇到这种情况,问题初步定为在调用函数前,对参数进行了加工. 但是经过测试,没发现有问题.
然后再次核查前端调用逻辑,也没有问题.
然后突然奇想,使用json对象日志来观察下. (因为这段代码的日志,一直都是xx.getParam()这种,直接输出String)
果然,直接就找到了问题所在. 对象输出 {"data": "\"aaaaaaaaaaaa\""}
也就是前端传参,实际上将字符串的前后都加上了双引号.
解决:
最后前端检查接口发现,是对字符串经过了两次转json.
思考:
以后输入日志参数,请尽量使用打印json,还原pojo的原貌,说不定能更快发现问题.
最新文章
- 与你相遇好幸运,德淘gen8历程
- Python正则表达式:最短匹配
- WIN32 API编程之 透明static
- about JNI
- Eclipse HibernateTools安装
- 转载:C++ STL set学习
- Clover
- [Cache] C#操作缓存--CacheHelper缓存帮助类 (转载)
- 关于iOS应用管理之九宫格的坐标计算以及与UIScrollView的结合
- cf486C Palindrome Transformation
- Qt中添加OpenCV库
- Spring IOC 之Bean定义的继承
- 筛法求素数Java
- Pickle模块数据对象持久化操作
- 后台任务hangfire
- 概率p输出1,概率1-p输出0,等概率输出0和1
- 利用privoxy劫持http网站数据,插入广告,获取用户名,密码
- Java进程线程理解
- Elasticsearch6.3 使用jdbc连接
- Android 界面间传参数
热门文章
- C++基础语法学习:STL
- $_GET方法踩坑
- vlc qt player 播放器开发实例
- 使用Prometheus监控docker compose方式部署的ES
- 【Java应用服务体系】「序章入门」全方位盘点和总结调优技术专题指南
- 财务精度:BigInteger 与 BigDecimal
- 12月9日内容总结——静态文件以及配置、form表单属性的作用、request对象、python连接数据库和Django连接数据库、ORM的基础知识介绍
- C++ 地球人口承载力
- Mybatis获取插入值的ID
- redis-07主从复制