背景:

    下午在做一个前后端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的原貌,说不定能更快发现问题.    

排查问题-输出pojo日志,尽量用json的更多相关文章

  1. 提取日志中的json请求发送到另外一台机器

    将日志中的json请求提取,并且发送到另外一个机器上: for i in ` cat impression.log.2016-04-08-10 |awk -F"\t" ' {pri ...

  2. ELK系列~Nxlog日志收集加转发(解决log4日志换行导致json转换失败问题)

    本文章将会继承上一篇文章,主要讲通过工具来进行日志的收集与发送,<ELK系列~NLog.Targets.Fluentd到达如何通过tcp发到fluentd> Nxlog是一个日志收集工具, ...

  3. 【docker】docker部署spring boot服务,但是docker logs查看容器输出控制台日志,没有日志打印,日志未打印,docker logs不打印容器日志

    如题: docker部署spring boot服务,但是docker logs查看容器输出控制台日志,没有日志打印,日志未打印,docker logs不打印容器日志 场景再现: docker部署并启动 ...

  4. (Python )格式化输出、文件操作、json

    本节学习Python的格式化输出,文件操作以及json的简单用法 1.格式化输出 将非字符串类型转换成字符串,可以使用函数:str() 或者repr() ,(这两个函数的区别目前我还没搞懂,求解答) ...

  5. Log4j 输出的日志中时间比系统时间少了8小时的解决方法,log4j日志文件重复输出

    1. 第一个问题:时间少了8小时 Log4j 输出的日志中,时间比系统时间少了8小时,但是 eclipse 控制台输出的日志的时间却是对的. log4j配置如下: #all logger output ...

  6. [Java] log4j异常输出到日志

    当程序运行异常时,e.printStackTrace()会打印出异常.但是很多时候我们希望将这些异常输出到日志中,以便日后可以随时查看到,可以通过这些异常快速的找到程序发生异常的代码. 那么有办法可以 ...

  7. Spring MVC自定义统一异常处理类,并且在控制台中输出错误日志

    在使用SimpleMappingExceptionResolver实现统一异常处理后(参考Spring MVC的异常统一处理方法), 发现出现异常时,log4j无法在控制台输出错误日志.因此需要自定义 ...

  8. log4j日志输出到日志文件中和控制台中 +log4j配置详解

    1.引入log4j的jar包 https://mvnrepository.com/,可以找到log4j的jar和依赖. 2.创建log4j.properties,并配置log4j #设置日志的级别 , ...

  9. 修改nginx日志格式为json

    Nginx 日志默认为普通文本的格式 /Oct/::: +] "https://boss.zbt.com/finance/partner/create-account-gateway?id= ...

  10. Nginx 日志改成 JSON 格式

    Nginx 日志默认为普通文本的格式,例如,下面是 Nginx 的一行访问日志: 10.88.122.105 - - [02/Dec/2017:09:15:04 +0800] "GET /j ...

随机推荐

  1. docker 第二课

    构建nginx镜像 Dockerfile 指令: FROM centos:7.9.2009 #在整个dockfile文件中除了注释之外的第一行,要是FROM ,FROM 指令当前镜像的用于指定父镜像( ...

  2. python Flask 操作数据库

    Flask数据库 转载:Flask数据库 - 苦行僧95 - 博客园 (cnblogs.com) Flask-SQLAlchemy Flask-SQLAlchemy是在Flask中操作关系型数据库的拓 ...

  3. AcWing786.第k个数

    题目描述 给定一个长度为 \(n\) 的整数数列,以及一个整数 \(k\),请用快速选择算法求出数列从小到大排序后的第 \(k\) 个数. 输入格式 第一行包含两个整数 \(n\) 和 \(k\). ...

  4. SSM基础学习笔记

    SSM框架: 1.界面层---servlet类---SpringMVC 2.业务逻辑层---service类---Spring 3.数据访问层(持久层)---dao类---MyBatis 一.MyBa ...

  5. 2022年7月9日 第四组 周鹏 HTML的初认识

    <!DOCTYPE html> <html lang="en"> <!--      文档的根标签 --> <head>     & ...

  6. C语言两结构体之间的成员互换

    今天在写一个通讯录实现程序的时候,遇到个让我突然卡壳的问题,不知道怎么进行两个结构体之间的成员互换......结构体成员有"姓名","性别","年龄& ...

  7. day01-ES6新特性

    ES6新特性 1.ES6是什么? DCMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,2015年6月发布 ES6设计目标:达到JavaScript语言可以用来编写复杂 ...

  8. 内网渗透-at&schtasks&impacket的使用

    内网机器结构 机器账号密码如下: 2008 r2 webserver 域内 web 服务器 本地管理员账号密码 : .\administraotr:admin!@#45 当前机器域用户密码 : god ...

  9. python之路46 django request对象 form表单 pycharm连接数据库 ORM简介

    静态文件配置 1.编写一个用户登录页面 2.静态文件 不怎么经常变化的文件 主要针对html文件所使用的到的各种资源 css文件.js文件.img文件.第三方框架文件 django针对静态文件资源需要 ...

  10. Java基础篇——常用类

    Objec类 Test t1 = new Test(); Test t2 = new Test(); //toString方法,对某个对象的字符串输出 //getClass方法,返回该对象的Class ...