验证码是四位小写字母,iPhone 用户输入时首字母自动变成大写,提交提示验证码错误,安卓上同样输入却能过。日志里能对上时间点,这种反而好排。

输入框没有关闭自动大写和自动纠错,iOS 默认按句子首字母处理,用户看到的是大写,输入框里存的也是大写。校验又区分大小写。这一点先确认清楚,后面就不用反复试。

<input type="text" name="code" autocapitalize="off"
       autocorrect="off" spellcheck="false">

「autocapitalize 验证码」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。

报错里带路径的,先去看那个路径在不在、权限对不对。

处理上按这个顺序:输入框加关闭自动大写、关闭自动纠错、关闭拼写检查三个属性;服务端校验时统一转小写再比对,两端都不吃亏;用 iPhone 键盘实际输入一次,看提交的值和图片是否一致。

结果对不对很好判断,iPhone 上输入小写字母保持原样,提交不再提示验证码错误。

作者 9823189