移动开发

URIError-malformed 一次排坑记录

2019-03-01  本文已影响0人  张大壮呐

现象:一个前端页面访问服务端接口,同一个接口会访问几十次或者上百次。

排错过程:

1.发现前端有个判断逻辑,服务端接口响应后发生异常就尝试重新发起请求。

2.发现异常来源于解密响应报文的逻辑中,调用了des3.js的方法,是库中方法在decode过程报 URIError-malformed 异常。

3.通过这个错误反复排查入参是否编码问题后,无果

4.通过前端进des3.js的方法前打日志,出des3前打日志,发现出去前有部分请求的报文是乱码的。而且是随机,时好时坏。

5.把有乱码前的密文,手写解密程序进行解密。复现问题。

6.由于之前请求服务端一个请求需要一个随机key做签名,此时通过其他key进行解密,若干key中有一个是可以的。

7.问题到这里基本清楚,就是key和请求的对应关系搞乱了。

8.由于前段请求服务端是并发的,这里的key做为了一个全局参数。所以解密的时候哪一个请求最先返回,则会先取用公用的key进行解密。

根因:前端并发请求服务端,key参数没有考虑并发。之所以报标题的问题,是由于key的原因解密失败成乱码。

上一篇下一篇

猜你喜欢

热点阅读