@domain#code 这一核心模式。其中 @ 后面跟的是发送验证码的网站域名(例如 @example.com),# 后面跟的是数字验证码(例如 #123456)。完整的短信示例可以是:「您的验证码是 @example.com#123456,有效期 5 分钟。」短信中可以包含其他文字内容,但 @domain#code 模式必须完整存在。域名必须与当前网页的域名精确匹配,浏览器才会自动填入验证码。navigator.credentials.get()。不过,在本地开发环境中,localhost 和 127.0.0.1 等本地回环地址会被浏览器自动视为安全上下文,无需配置 SSL 证书即可正常使用 Web OTP API。这为开发者的本地测试提供了便利。在生产环境中部署时,请确保服务器已正确配置 HTTPS 证书。AbortController 来处理超时场景。具体做法是:创建一个 AbortController 实例,将其 signal 传递给 navigator.credentials.get() 方法,然后通过 setTimeout 设置超时时间(通常 30 到 60 秒)。超时触发时调用 controller.abort() 取消请求,并捕获 AbortError 异常,向用户显示「验证码获取超时,请重试」等友好提示。同时,应提供重新发送验证码的按钮,让用户可以主动重试。本工具的「测试超时处理」功能可以演示这一完整的超时处理流程。@ 后面的域名必须与当前网页的域名完全一致。例如,短信中写的是 @example.com,那么当前网页的域名必须也是 example.com,不支持子域名匹配(即 sub.example.com 不会匹配 @example.com)。这意味着如果项目有多个子域名,需要为每个子域名单独配置短信中的域名信息。这种严格的设计是为了最大程度保障安全性,防止跨域的验证码误填。开发者在配置短信模板时,请务必确保域名与实际发送验证码的网站域名一致。navigator.credentials.get() 方法。需要注意的是,PWA 应用在离线状态下无法使用 Web OTP API,因为该 API 需要浏览器与底层短信系统通信。另外,如果 PWA 以「添加到主屏幕」的方式运行,部分浏览器可能会将其视为独立应用,此时 Web OTP API 的行为可能略有差异,建议在目标平台上进行充分测试。总的来说,PWA 与 Web OTP API 的兼容性良好,是推荐的技术组合。navigator.credentials 对象是否存在,以及其 get 方法是否支持 otp 参数。如果浏览器支持 Web OTP API,使用自动填入功能提升体验;如果不支持,则回退到传统的手动输入验证码方式。具体实现中,可以将 Web OTP API 的调用封装在一个 try-catch 块中,捕获 TypeError(API 不存在)或 NotAllowedError(权限被拒绝)等异常,然后展示手动输入界面。同时,在页面上可以添加一个提示,告知用户当前浏览器不支持自动填入,建议升级到 Chrome 84 以上版本以获得更好的体验。
UD5工具箱