最近在用一款app。前几天我试图登陆它的网页的时候,它提供了app扫描登陆服务。但是,我每次打开那个页面二维码都报了一个20001:时间校验失败的异常。这让我感觉非常奇怪,不管是微信还是别的什么网页,扫码登陆都应该是一个非常成熟的功能了。为什么这个软件会发生这么一个低级的bug?
出于对于技术的坚持,对于bug的不能忍,我先是给他们留的工作邮箱发了一个邮件说明了我登陆的环境(windows),浏览器(ie and chrome),然后跟他们详细的说明了我触发的异常。
过了一天,虽然该公司的工作人员并没有回复我的邮件,但我转念一想,这个技术既然如此成熟,他们的开发团队不可能推出一款bug严重到无法登陆的情况。如果是真的出现如此严重的bug,这个功能现在肯定已经修复完了。而到现在还没有修复,那么只剩下一种可能,就是这个bug不严重,他们的测试没有发现,绝大多数用户也没有触发这个异常。
到这,我大概已经想到可能是什么原因了。既然触发的时间上的异常,那么唯一的可能就是我的时间设置触发了这个异常!
是的,我的时间比北京标准时间慢了五分钟,如果它在对页面进行校验时间时,从前端返回的时间戳是从我的电脑上提取的系统时间的话,当这个时间到达服务器时,时间上已经晚了五分钟。一般二维码更新也就是小几分钟的事情。所以,我几乎可以肯定是我的系统时间的设置触发了这个bug。
我修改了我的系统时间,和北京时间保持一致。果然,二维码成功刷新出来,也没再触发任何bug。当然,事后,我又给那个工作邮箱发了一个邮件,到目前为止那个公司也没有人回复我的邮件,我估计大概率是淹没在众多用户的反馈中了吧。(如果他们有回复,我会更新这个博客,让看到的人知道。)
说回来,我记得当年我刚用teamviewer的时候,我的账号被误判成商业账号从而无法使用,我也给他们的邮箱反馈了我的情况。与这次石成大海不同的是,teamviewer团队竟然有两个人先后回复了我邮件,虽然是很官方的格式邮件,但他们处理用户反馈的速度以及这个态度,我是真的佩服。
说回这个bug:
话说后来我想了一下,这个bug的处理方式其实很简单,后端在给前端发二维码的时候,自带一个服务器的系统时间作为时间戳,所有的更新,校验,失效逻辑都基于后端提供的这个系统时间作为依据,这样就完全避免了用户在自己电脑上随意设置时间而引发时间校验bug的问题。仔细想来,包括腾讯的微信在内的网页二维码的逻辑应该都是我提到的这种情况,因为我之前使用二维码登陆都没有问题,唯独这次在这个页面上出了问题。
这个故事告诉我们:任何一个细节考虑的不够周全,都有可能引发bug。
所以,keep calm,think carefully!
一个bug的警示
最新推荐文章于 2020-03-19 17:18:02 发布