线下物料印了 200 张二维码,扫码跳到 test.example.com 的测试站,上线一周才发现,测试库里躺着三十多笔真实订单。乍看像缓存或者权限的锅,追下去往往不是。

QRCode.toDataURL('https://www.example.com/campaign/2026', { width: 600 }, (e, url) => console.log(url));
# 预发环境禁止生成对外二维码

追下去是这么回事:二维码是预发环境生成的,生成脚本读的是 window.location.origin,没有配置固定的对外域名。物料印刷前也没有扫码核对,测试域名一直留在了图里。

「二维码测试域名」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。报错里带路径的,先去看那个路径在不在、权限对不对。

具体做法是,生成逻辑改成读配置里的正式域名 不读当前 origin;老二维码做 301 跳到正式地址 保住已印物料;上线前用真机扫一遍 检查落地 host。

验收就看一点,扫物料上的二维码落到正式域名,Network 里没有 test 子域的请求。

作者 9823189