收藏
回答

qyapi.weixin.qq.com频繁更换IP,DNS缓存旧IP导致访问不通的Bug

问题类型 API/组件名称 终端类型 微信版本 基础库版本
Bug https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo 微信安卓客户端 8.0.16 2.14.0

获取访问用户身份:

https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo

doc:https://work.weixin.qq.com/api/doc/90000/90135/91707


openid转userid:

https://qyapi.weixin.qq.com/cgi-bin/user/convert_to_userid?access_token=

doc:https://work.weixin.qq.com/api/doc/90000/90135/90202


登录凭证校验。通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程。更多使用方法详见 小程序登录:

https://api.weixin.qq.com/sns/jscode2session

doc:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html


我们项目的需要频繁用到该3个接口,解决的场景是微信小程序完成企业登录验证。

qyapi.weixin.qq.com和api.weixin.qq.com这个两个域名,一天变几回IP,而且不是负载均衡那种,负载均衡一般是多个IP都通,这两个域名换了IP后,旧的IP不通。

任何一款DNS(腾讯DNS、阿里DNS、114.114.114.114、8.8.8.8、私有DNS)都会把域名解释到的IP,缓存10分钟,下次访问时如果命中DNS缓存,则直接由DNS缓存返回。再加上操作系统(Windows、Linux)也会有自己的10分钟DNS缓存。

如果在DNS服务器域名缓存第10分钟快要过期时,操作系统命中了DNS服务器的缓存,把DNS的缓存重新缓存到操作系统DNS缓存,就会导致最长20分钟无法正常使用系统,因为这段时间ping qyapi.weixin.qq.com和ping api.weixin.qq.com,得到的IP是旧IP,已经不提供接口响应。

请腾讯官方解决这个问题,在更换域名更换IP时,延长旧IP的有效时间,或者固定几个长期有效的负载均衡IP。这个问题不是开发者能解决的了。

回答关注问题邀请回答
收藏
登录 后发表内容