uni-app h5应用在苹果手机上偶尔出现请求发送报错 (failed)net::ERR_CONNECTION_RESET

发布于 1周前 作者 yibo5220 来自 Uni-App

uni-app h5应用在苹果手机上偶尔出现请求发送报错 (failed)net::ERR_CONNECTION_RESET

操作步骤:

  • uni.request

预期结果:

  • 200

实际结果:

(failed)net::ERR_CONNECTION_RESET

bug描述:

前后台域名端口一致,后台通过nginx代理,,,现在就是苹果手机(移动网络)偶尔可以,大部分请求不可以,请求发送不出去, chrome浏览器也会有类似问题,,,,10次只有1次能成功,不清楚啥问题

下图两个接口是同一个,一个成功,一个失败了,数据都是同一套

开发环境 版本号 项目创建方式
Windows win11 HBuilderX

Image 1 Image 2

App下载地址或H5网址:


1 回复

在处理uni-app H5应用在苹果手机上偶尔出现的请求发送报错(failed net::ERR_CONNECTION_RESET)问题时,这通常与网络连接的不稳定、服务器配置问题或者客户端请求处理不当有关。由于这是一个偶发性问题,可能涉及到多个层面的排查和修复。下面提供一个基本的思路和代码示例,帮助你更好地进行调试和定位问题。

1. 检查请求库和异常处理

首先,确保你在uni-app中使用的HTTP请求库(如axios、fetch等)有适当的错误处理机制。例如,使用axios时,你可以这样处理请求:

import axios from 'axios';

axios.get('https://your-api-endpoint.com/data')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    if (error.response) {
      // 服务器响应了状态码,但状态码在2xx范围之外
      console.error('Error Response:', error.response.data);
      console.error('Error Status:', error.response.status);
      console.error('Error Headers:', error.response.headers);
    } else if (error.request) {
      // 请求已发出,但没有收到响应
      console.error('Error Request:', error.request);
    } else {
      // 其他错误(如请求配置错误)
      console.error('Error Message:', error.message);
    }
    console.error('Error Config:', error.config);
  });

2. 尝试重试机制

对于偶发性网络问题,实现一个简单的重试机制可能有助于解决问题:

function requestWithRetry(url, options = {}, retries = 3) {
  return axios(url, options)
    .catch(error => {
      if (retries > 1) {
        return requestWithRetry(url, options, retries - 1);
      } else {
        throw error;
      }
    });
}

requestWithRetry('https://your-api-endpoint.com/data')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error('Final Error:', error);
  });

3. 服务器端检查

  • 确保服务器配置正确,支持HTTPS(如果使用的是HTTPS)。
  • 检查服务器日志,看是否有关于连接重置的错误信息。
  • 确保服务器没有过载,有足够的资源处理请求。

4. 网络环境

  • 在出现问题的苹果手机上,尝试在不同的网络环境下(如Wi-Fi、4G/5G)访问应用,看是否问题依旧。
  • 检查是否有网络防火墙或代理设置可能干扰请求。

通过上述步骤,你可以逐步缩小问题范围,定位并解决ERR_CONNECTION_RESET错误。如果问题依旧存在,可能需要更详细的网络诊断或联系网络服务提供商。

回到顶部