【7.3日在腾讯大战无赖bug】spring 401 Unauthorized: \“{..“message时间戳已过期或签名未通

如题:主播最近在本地开发中遇到了一个bug,大概是我的接口中需要请求外部同事的接口,然后每次请求都会报错,每次每次都错!,然后返回的error是《时间戳已过期或签名未通过》,顾名思义,应该就是包装请求头的时间戳过期了:

但是正常来说也得超过五分钟才会过去吧,我这一整个接口都用不了1秒,怎么会!怎么会!(陷入沉思

然后尝试让同事帮忙在他们本地执行,他都可以,all ! without me. no!

开始怀疑jdk、怀疑电脑(有理由换好点的Mac哈哈,开玩笑)

然后更换jdk后也一样有问题,然后开始怀疑电脑本地时间有问题,但是每次本地生成的时间戳拿去转换时间,都和当前差不多(就早了10几秒嘛,因为操作去网页翻译要点时间,就感觉正常,埋雷

再加上难以调试对方服务,只能通过他的返回结果来参考,所以就思维定势一看关注着《时间戳已过期、时间戳已过期》 

然后主播开始怀疑是不是获取时间戳的函数有问题(玄学)、然后我又换了Date、Instant...各种生成的方式,都不行

然后,我就打断点调试看情况,看这个值对不对,都感觉挺正常的,哦!然后有一次,主播打完断点后,就去干人生大事(上厕所),回来打算继续解决,然后把断点一放,通过了!!!哦哦哦!!

fine,陷入沉思,然后想是不是断点打久一点,再放行就可以通过,OK,开始验证,还真是!然后一度感觉项目在抽风(因为返回都说时间过期了,你不想着加速,反而等待拖后了),但是事实胜于雄辩!结果就是这样,

然后我开始反思,为什么一定就是我代码的问题,不是他的问题(准确来说是他返回结果的问题)然后我开始想,时间戳过期至少五分钟吧,我肯定不会触发,但是他还是返回,

就是一点!不是过期,反而是超过他了!我本地的时间是他未来的时间因为就多了几秒的纯在(崩!卖的雷炸了,多几秒),所以难以察觉,也验证了,打断点几秒后就可以通过。

然后我就去看本地时间的配置(如何):

没和服务端同步!wdf,验证猜想,打开

重试,不用打断点,丝滑请求通过!

那文章到这基本接近尾声了,小小总结一下吧!

1.耳听为虚,眼见为实。给我们返回的报错提示也不一定是对的,要自己操作验证

2.头脑风暴,想想多种方法(包括相反的可能),或许就是呢,这次就是这样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值