|
上周帮朋友处理一个报名系统的网页无法问题,她点了五次“获取验证码”,发送手机毫无动静。验证页面提示“发送成功”,码解可短信就是网页无法不来。这种事儿太常见了——你以为是发送自己手机欠费,其实是验证网页那边根本没把请求发出去。 先看最直接的码解:浏览器控制台。按 F12 打开开发者工具,网页无法切到 Network 面板,发送再点一次发送验证码。验证如果看到一个红色的码解请求,状态码是网页无法 4xx 或 5xx,那问题就在服务端。发送403 多半是验证接口权限配置错了,429 是触发了频率限制,500 是后端代码崩了。我见过一个案例,某平台换了短信服务商,但环境变量里的 API Key 没更新,所有请求都返回 401,前端却傻傻地弹“发送成功”。 如果 Network 里压根没有新请求,那就是前端 JavaScript 挂了。可能是按钮的点击事件被别的元素遮挡,或者某个全局变量报错导致后续代码不执行。打开 Console 面板,看看有没有红色报错。有一次我遇到的是页面引入了两个版本的 jQuery,冲突之后所有事件绑定失效。这种问题刷新没用,得让开发修。 手机号格式校验也是个坑。有些网页的正则写得特别死,只认 13x 到 19x 开头的号码,虚拟运营商 170/171 号段直接被拒。更隐蔽的是,前端校验通过了,但后端数据库里存的是带 +86 的格式,两边对不上。你这边看着手机号没错,接口那边返回“参数无效”。 短信通道本身也会出问题。运营商对验证码短信有严格的风控,同一内容短时间发太多次,会被暂时屏蔽。我实测过,某个小平台用同一模板给不同号码发,前 20 条正常,第 21 条开始全部失败,但接口依然返回 success。这种情况只能等 10 到 30 分钟,或者换一个短信服务商。 浏览器插件偶尔会坏事。广告拦截器(比如 uBlock Origin)有时候会把短信接口的 URL 当成跟踪脚本给拦了。你可以在无痕模式下试试,如果无痕能收到,那就是插件的问题。另外,某些企业内网会屏蔽外部短信网关的 IP,你在公司连 WiFi 就发不出去,切 4G 立马正常。 用户端能做的排查其实有限。先确认手机没欠费、没开飞行模式、短信箱没满。安卓手机注意一下“骚扰拦截”文件夹,iOS 看看“过滤短信”分类。然后换个浏览器或设备试试。如果都不行,别反复点,等两分钟再试一次——频繁点击只会让风控更严格。 实在不行就找客服。但别只说“收不到验证码”,把时间点、手机号、浏览器版本、是否连 WiFi 这些信息一起给过去。我见过最离谱的案例是,用户手机号被前主人绑定了某个黑名单,运营商层面直接拦截所有验证码短信。这种只能换号,或者让平台走语音验证码通道。 说到底,网页发不出验证码,九成问题不在你手机上。要么是前端代码写崩了,要么是后端接口挂了,要么是短信通道被限流。作为普通用户,能做的也就是换个网络、换个浏览器、等一会儿再试。剩下的,得靠开发去查日志。 |