刚刚过去的双十一,跟另外两个同事在公司睡的觉... 移动端有些页面用H5开发后再用APP打开,请求里面的有些必要参数是由APP传递过来的比如用户登录信息等等,其中包括cookie,这个cookie中就包含了当前操作的用户信息,请求的时候如果没有,接口就会返回状态码401提示需要登录。 然而,随着需求的来临,客户端APP接入了一家广告(*山甲),由于本人是个菜鸟穷逼前端,开发阶段一直用的是自己一两千块的Android手机,任务开发的也还算顺利,自己测试没问题了就发布到测试环境后通知测试同事可以开干了! Android测试一切顺利,下班前包打好了准备上线,由于要发版,但在iOS上测试时发现个奇葩问题,接口请求有时正常返回200有时不行返回401(需要登录),客户端APP用flutter开发的,按理说有问题的话Android应该也有问题才是,但事实证明只有iOS会有这种概率问题,但返回401的本质问题是请求时cookie没有带过去,后端验证失效导致。大概晚上9点公司只剩下我、iOS跟测试同事3个人了。 跨域问题:1. 接口跨域倒还好解决;2. cookie跨域,在nginx转发了一次请求。Android测试通过说明跨域应该不再是问题。 异步问题:H5跟APP间的通信是异步的,用户登录的cookie就是在双方通信过程中传过来的。我也是在拿到数据后才会发出请求,而且在请求前打印的数据显示是有的,拿刀杀了我我也不知道用抓包工具看到发出的请求中请求参数跟cookie为啥都没有了。这时有同事说要不试试延时,随后我在请求发出的各个环节都加上了猥琐的setTimeout,折腾测试了好久发现还是不行,看看时间差不多11点半了,我看了看淘宝购物车,手抖着发起了支付,毕竟四百多大洋呢... 像没头苍蝇一样折腾了一天也不知道问题到底出在了什么地方,我也开始怀疑自己可能不适合这个工作,是不是应该回家种田。最后转机发生了,测试同学偶然发现了一个必现问题,如果进入了有广告的APP页面,再进入H5页面就必现这个问题。iOS同事之前提过在这个第三方广告文档中看到,不过一直没有引起注意,这时候再去看文档的时候,发现POST请求会清除请求体,测试发现cookie也一并清除掉了。我草,原来罪魁祸首是这个刚接入的破玩意。凌晨1点多了,眼看问题是解决不了了,发版更是不可能,我们3个人决定不回去了,如果回去的话睡不了几个小时又要来,就这样差不多2点的时候趴在桌子上放下了嗡嗡的脑袋。 第二天上班后,采用了GET请求方式,cookie里面的信息通过自定义header传过去,这样才把这个无耻的广告问题绕了过去。这次车祸现场后来想想应该是iOS接入的广告在webview拦截了请求偷偷地做了不为人知的猥琐操作...
你遇到过什么样的Bug,记忆犹新?经常以为调完这个Bug就可以下班,没想到......调完1个Bug多出来99个新Bug?😭 调完前端Bug,发现后台也有Bug;调完后台Bug,发现xx好像也有Bug?🤷🏻♂️ 总之,「Bug」是程序研发过程中难以绕开的话题,你遇到过什么样的Bug到现在还记忆犹新呢? 图:当你以为fix了1个Bug时......⬇️ [图片]
2019-12-09