微信网页授权问题记录

在做微信的h5认证授权时,发现h5获取到code提交到后端后,h5这边会连续刷新2次。第一次的被中断,第二次的响应异常。因2次提交的code都一样,而微信的code 只能使用一次,故第二次的异常是正常情况。问题出在第一次,为什么会中断。

刷新2次的问题,从网上找了很多帖子,有在客户端的cookie做cache,通过记录次数来规避这个问题;有后端做cache,通过识别提交的code相同来规避这个问题的;也有加一个connect_redirect参数来解决问题的。但这些对我的场景都无效。而且后端做了规避后,会导致前端死循环请求。

具体问题的原因定位流程如下:

1.前端请求任意其它接口,是否会发生连续2次刷新。结果:不会;

2.前端请求的鉴权接口,其中请求了微信的code认证与用户信息获取的接口,是否和这些接口的请求上下文有关。结果:无关;

3.前端请求鉴权接口,拿到用户信息后,还构造了一个业务对象,是否和构造过程有关。结果:无关;

4.前端请求鉴权接口,接口响应是否正常。结果:正常;

5.微信客户端或者开发者工具是一个半封闭环境,对运行在其上的业务是有一定的要求的。最起码自我保护肯定是要做的。那是不是加载的数据过多,导致触发其安全策略导致请求被中断。尝试将接口响应内容压缩2/3,发现不再连续刷新2次,此时,定位到具体问题。

原文地址:https://www.cnblogs.com/asfeixue/p/10226312.html