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

基于jQuery与PHP的AJAX消息系统偶发ERR_NAME_NOT_RESOLVED错误求助

解决AJAX偶发ERR_NAME_NOT_RESOLVED错误的思路

首先得明确:ERR_NAME_NOT_RESOLVED和CORS完全无关——CORS错误会在控制台明确提示"Cross-Origin Request Blocked"这类信息,而这个错误是浏览器根本无法解析请求的域名,本质是DNS层面的问题,先把这个误解澄清。

结合你的场景(仅Windows的Chrome/Opera偶发、服务器日志无异常),给你几个针对性的排查和解决方向:

1. 把AJAX请求的URL改为绝对路径

你当前用的是相对路径ajax/ajax.send-message.php,虽然理论上同域下没问题,但偶尔会因为浏览器的页面上下文变化(比如前端路由的hash/history模式、页面base标签的影响)导致路径解析异常,甚至误指向错误的域名。

修改成带完整域名的绝对路径试试:

$.ajax({ 
    url: 'https://你的域名/ajax/ajax.send-message.php', // 替换成你的实际域名
    type: 'POST', 
    dataType: 'json', 
    data: sendData, 
    cache: false, 
    contentType: false, 
    processData: false 
}).done(function(res) { 
    refreshMessages(); 
}).fail(function(jqXHR, textStatus) { 
    console.log('Error: '+textStatus); 
});

2. 排查DNS解析的稳定性

这个错误的核心是DNS解析失败,可能的原因包括:

  • 浏览器DNS缓存异常:Chrome/Opera会缓存DNS记录,偶尔出现缓存过期或污染的情况。出现错误时,可以直接在浏览器地址栏访问AJAX接口的绝对URL,看是否能正常打开——如果能,说明是浏览器缓存的问题,手动清除浏览器DNS缓存(Chrome可以在chrome://net-internals/#dns页面点击"Clear host cache")。
  • 系统DNS不稳定:Windows系统默认的DNS服务器可能偶尔解析失败,建议切换到公共DNS(比如8.8.8.8或1.1.1.1)测试,同时可以关闭Chrome的"安全DNS"功能(设置→隐私和安全→安全→使用安全DNS),避免浏览器自己的DNS解析逻辑干扰。
  • 域名解析波动:用nslookup或dig工具多次测试你的域名,看是否存在偶尔解析失败的情况,如果有,联系域名服务商检查DNS记录的有效性和缓存时间。

3. 添加请求重试机制

既然是偶发错误,给AJAX请求加个重试逻辑,针对DNS解析错误自动重试1-2次,能大幅降低用户感知到的失败率:

$.ajax({ 
    url: 'https://你的域名/ajax/ajax.send-message.php',
    type: 'POST', 
    dataType: 'json', 
    data: sendData, 
    cache: false, 
    contentType: false, 
    processData: false,
    retryCount: 0 // 初始化重试次数
}).done(function(res) { 
    refreshMessages(); 
}).fail(function(jqXHR, textStatus) { 
    console.log('Error: '+textStatus);
    // 只针对DNS解析错误重试
    if (jqXHR.statusText.includes('ERR_NAME_NOT_RESOLVED') && this.retryCount < 2) {
        this.retryCount++;
        console.log(`重试第${this.retryCount}次...`);
        setTimeout(() => {
            $.ajax(this); // 复用当前AJAX配置重试
        }, 2000); // 间隔2秒重试
    } else {
        alert('消息发送失败,请检查网络后重试');
    }
});

4. 排查浏览器扩展和标签页状态

  • 浏览器扩展干扰:Windows下的Chrome/Opera常安装广告拦截、隐私保护类扩展,这些扩展偶尔会误拦截AJAX请求或干扰DNS解析。可以在隐私模式下测试,如果隐私模式下不再出现错误,就逐个禁用扩展排查。
  • 标签页休眠影响:Chrome/Opera会对后台标签页限制网络请求,当标签页从休眠状态唤醒时,可能出现DNS解析异常。如果你的消息系统常在后台标签页使用,可以在发送请求前检查页面可见性,比如:
if (document.visibilityState === 'visible') {
    // 发送AJAX请求
} else {
    alert('请激活当前标签页后发送消息');
}

5. 检查服务器的域名绑定

虽然服务器日志无异常,但还是要确认服务器的虚拟主机配置是否正确绑定了你的域名,避免出现偶尔的域名解析到错误服务器的情况(比如域名过期后短暂恢复、DNS缓存未同步)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 16:12:37