先给结论:如果测试工具能访问、真实用户却失败,优先怀疑的不是二级域名本身,而是“请求条件不一致”。二级域名作用在于把不同环境、不同地区、不同登录态拆成独立入口,这恰恰意味着测试工具访问的可能是另一个入口。复现的关键动作是:把失败用户的完整请求条件(解析结果、协议、路径、Cookie、UA、Referer)逐项搬到可重复的工具里,直到工具也失败。只有工具能稳定复现失败,你才有资格判断问题出在DNS、证书、CDN、服务端还是前端。
测试工具通常只走一条链路:解析域名、建立连接、拿到响应。真实用户失败可能发生在更早或更晚的环节。用三个可区分的证据定位:
先确定失败停在哪一层,再决定复现哪些条件。跳过这一步,直接改配置,很可能修的是工具本来就没走的那条路。
复现条件有两条常见路线,选择取决于你能否拿到失败用户的原始请求。
适用条件:你能联系到失败用户,或自己能在另一台设备上重现。动作是让用户提供解析结果、浏览器版本、是否登录、访问的完整URL。然后你在测试工具里逐项设置:指定DNS服务器、指定来源IP或地区、带上相同Cookie和UA。代价是慢,且用户描述可能不准;但如果失败与地区或登录态强相关,这是唯一能覆盖真实链路的方式。
适用条件:失败请求已被记录(如服务端日志、CDN日志、用户侧HAR文件)。动作是把原始请求原样重放到工具里,包括请求头顺序之外的字段值。代价是日志可能被采样或脱敏,Cookie可能已过期;一旦重放成功,说明失败依赖时间或一次性令牌,而不是二级域名配置本身。
判断标准很简单:如果重放能复现失败,走路线二更快;如果重放成功但用户仍失败,说明你漏掉了环境条件,回到路线一补齐。
假设测试工具和用户都访问同一个二级域名,解析、证书、响应都一致,但用户依然失败。此时“复现请求条件”这条思路可能失效,因为差异不在请求侧,而在用户侧的网络中间设备——例如企业代理、运营商缓存或安全软件对特定二级域名的拦截。这类拦截不会出现在你的工具里,也不会出现在服务端日志中。识别信号是:用户换网络(如从公司Wi-Fi切到手机热点)后恢复,而工具在任何网络下都正常。遇到这种情况,复现条件应转向“用户网络路径”,而不是继续调服务端。
工具能稳定复现失败后,按失败层级决定动作:
每次动作后,让最初失败的用户用原条件重试一次。如果用户恢复而工具仍失败,说明工具的环境本身有缓存或代理,需要清理工具侧状态再验证。只有用户侧确认恢复,才算闭环。
二级域名把流量拆成多个入口,好处是隔离,代价是每个入口都可能独立出错。测试工具能访问只证明它走的那条入口是通的,不证明用户走的那条也通。先复现条件,再动配置,是避免把时间花在错误层级上的最实际做法。