早上7点45分来到公司,我坐在办公桌旁边开始考虑今天的工作事项。想到客户一直抱怨的电子表单系统在产品环境上8000多个无法重现的错误日志就亚历山大,"替换成微软类库也并不一定解决问题,客户又在捣乱。今天一定要和夏夏一起看看这个问题,优先级得提上来",我心里暗自的想着,并把它加到了待办事项的第一条,优先级标为高,截止时间是今天。 开了个好头,但遭遇IE-Only问题 按下遇到的各种环境问题不提,这个错误很快就在IE浏览器(文中统称IE)上重现了,而且只在IE上才有这个问题:页面缺少Anti-CSRF Token导致请求被拒绝。"哎,这不错!",夏夏用他一贯的幽默风格说道。我想:是的,好兆头,万事开头难,我们似乎开了个好头,然而这怎么好像又是IE啊,真不靠谱。 更不靠谱的e.preventDefault? form.submit(function() { if ("AntiCSRF-TOKEN" element not exists) { form.append( input 'AntiCSRF-TOKEN' with value) } }); "哦,横切了一刀",我说。夏夏说:"恩,你说的太对了!是在所有Form提交时自动追加Token"。我想这看起来没问题,在早期系统中经常这样干。那么是谁动了我的Token呢? 11点了,我们的诊断工作紧张而有序的继续进行着,分析各种可能出现的异常路径以及可能性。各种测试验证貌似都没有问题。"这不应该呀。夏夏,我们在里面加上e.preventDefault,不让它提交,手工测测看。"这时我开始乱入,怀着试试看的态度对夏夏说。心想,怎么有些像回到了5年前工作在这个系统上的状态。夏夏改了代码并编译运行,奇怪的事情发生了:Form提交成功,并且错误被修复了!!不光开了个好头,好像我们还中彩蛋了的感觉。 我和夏夏都惊呆了:"这怎么可能?" 夏夏说。"是啊",我说,"e.preventDefault不是应该阻止提交吗?" 暗想我就是最近一段时间没写前端代码而已,世界变化这么快?我和夏夏又过了一遍Anti-CSRF Token处理代码,做了各种尝试,仍然没有头绪。即使e.preventDefault可以解决问题,但我们仍然不知道问题根源。谁动了我的Token!
Read full article from 谁动了我的Token – TW洞见
No comments:
Post a Comment