后台收到微信重复请求问题,解决方案

首先描述下应用场景,公司有一个h5页面(不是公众号文章)需要在微信浏览器打开及转发朋友圈或转发给好友,正常转发后发现没有描述及缩略图信息,解决方案请参考这篇文章https://www.jianshu.com/p/67ada6e9007a,写的很详细很好,这里就不再细述,这里重点要说的是页面里边的接口莫名的被多次访问的问题。

造成原因:可能是qq电脑管家类似的安全软件扫描的原因,对于未知域名的访问都要扫一遍安全性。。。。。。

解决方案:

方案1.后台收到多次请求,代码逻辑没问题的话,记得检查域名是否备案,域名是否备案,域名是否备案。如果域名没问题,大多是腾讯安全部门在扫码鉴别url的安全性,打印一下请求的ip和user-agent,给微信客服打个电话说明一下你问题,一般问题会解决的。

方案2.方案1是网上查到的,我们多次尝试联系腾讯人工客服,最终都以失败告终,无奈,我们自己用了一个很笨的方法也做到了解决问题的效果

主要思路是:进到页面里边时,首先判定本地是否已有保存的唯一确认的标识符(我用的时间戳),如果有,就把该标识符作为参数传递给后端,如果没有标识符,则新增标识符,同时把标识符存到本地,然后把新的标识符作为参数传递给后端,具体代码如下:

//Ajax请求
//this.ajaxrequest();

var virusParams = sessionStorage.getItem("virusParams")
if(typeof(virusParams)!=="undefined" && typeof(virusParams)!=="object" && virusParams) {
	this.ajaxrequest(virusParams);
} else {
	virusParams = (new Date()).valueOf()
	sessionStorage.setItem("virusParams", virusParams)
	this.ajaxrequest(virusParams);
}

此时,如果有访问一次页面 而请求多次相同接口的情况,那么 每次请求接口时都会携带相同的时间戳传递给后端,此时后端可以对接口进行识别过滤,如果有相同时间戳就默认只执行一次逻辑操作只返回一次结果

大概思路就是这样,具体还有部分细节处理这里就不再多述说了,如有疑虑,欢迎留言!

方案1参考了https://blog.csdn.net/gotohomebye/article/details/78508741

 

你可能感兴趣的:(web前端)