You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部分Android设备加载script资源报net::ERR_NAME_NOT_RESOLVED错误

问题背景

通过Chrome inspect调试部分用户Android设备时捕获控制台报错,截图如下:
控制台报错截图

近百台Android设备中仅1-2台出现net::ERR_NAME_NOT_RESOLVED报错,暂未定位根因。
涉及报错的外部资源引入代码(Django模板HTML片段):

...
        <script src="https://unpkg.com/react@17/umd/react.production.min.js" crossorigin></script>
        <script src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js" crossorigin></script>
        <script src="https://unpkg.com/smoothscroll-polyfill@0.4.4/dist/smoothscroll.min.js" crossorigin></script>
</head>

除unpkg托管的React相关资源外,polyfill、static.ads-twitter、google-analytics等不同归属的外部资源均触发相同的net::ERR_NAME_NOT_RESOLVED报错。

排查与解决方案

net::ERR_NAME_NOT_RESOLVED的本质是域名DNS解析失败,多个完全独立的第三方域名同时解析失败,直接排除单个服务端故障的可能,按以下优先级排查:

  • 故障设备本地环境排查
    统计故障设备的共性特征,优先确认以下配置:
    • 设备是否连接了存在域名拦截策略的公共WiFi、企业内网,是否开启了VPN、代理、广告拦截类APP
    • 安卓9及以上版本是否开启了自定义私人DNS,部分广告拦截类私人DNS会批量拦截CDN、统计类域名的解析
    • 设备本地运营商DNS节点是否出现临时故障
      验证方式:将故障设备切换至蜂窝移动网络,关闭所有代理、VPN、广告拦截工具,将系统私人DNS设置为「自动」后刷新页面,若恢复即可确认是本地网络配置问题,和业务代码无关。这类用户侧的配置问题不需要远程修复,做好代码兜底即可。
  • 代码侧兜底兼容
    公共CDN、第三方统计/广告类资源的解析稳定性不受业务方控制,必须做好容错避免影响主页面可用性:
    • React、polyfill这类页面渲染依赖的核心资源,不要完全依赖第三方公共CDN,打包后上传至自身业务的同域名静态资源目录部署,从根源规避第三方域名解析失败的风险
    • 若需保留CDN加速能力,增加降级逻辑,CDN资源加载失败时自动切换至自有静态资源地址加载,示例代码:
      <script src="https://unpkg.com/react@17/umd/react.production.min.js" crossorigin></script>
      <script>window.React || document.write('<script src="/static/assets/react.production.min.js"><\/script>')</script>
      
    • 广告、统计类非核心资源,添加async/defer属性避免阻塞主页面渲染,同时增加加载失败的捕获逻辑,不触发全局报错
  • 特殊场景适配
    若故障设备为安卓5及以下的老旧版本,需排查是否存在系统根证书过期、内置DNS服务失效的问题,这类设备本身网络栈支持存在缺陷,无完全兼容的修复方案,最优解是尽可能将所有页面依赖资源部署至同域名下,减少外部域名调用。

注意:若所有资源均为HTTPS协议引入,无需排查HTTP混发问题,该问题不会触发DNS解析类报错。

内容的提问来源于stack exchange,提问作者Psychopomp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 09:06:49