uni-app uni.request 特定域名异常报错

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

uni-app uni.request 特定域名异常报错

示例代码:


## 操作步骤:
运行到h5页面或者使用模拟器调试无问题。  
真机会返回异常报错,使用ip地址或者更换其他域名均无这个错误。

## 预期结果:
请求成功 或者返回正常的报错(如域名未解析、连接超时等)

## 实际结果:
管理员可见

## bug描述:
uni.request特定域名异常报错

| 信息类别         | 信息内容           |
|------------------|--------------------|
| 产品分类         | uniapp/App         |
| PC开发环境       | Windows            |
| PC开发环境版本   | windows 10         |
| HBuilderX类型    | 正式               |
| HBuilderX版本    | 3.4.7              |
| 手机系统         | Android            |
| 手机系统版本     | Android 10         |
| 手机厂商         | 华为               |
| 手机机型         | 华为               |
| 页面类型         | vue                |
| vue版本          | vue2               |
| 打包方式         | 云端               |
| 项目创建方式     | HBuilderX          |

9 回复

postman测试,接口地址多少?


您好 我贴在回复里了

回复 青岛汇信互联: http://32i74e6621.qicp.vip:8010 本来就是请求不了

回复 FullStack: 可以呀,访问出来就是个报错页面啊。关键是这个报错很诡异根本不应该有后面的/127.0.0.1这段东西。我换成其他域名就好了。。

回复 青岛汇信互联: 就算是请求不了的话也应该会报超时或者域名没解析才对

回复 青岛汇信互联: 我这里返回这个:{ “data”: { “timestamp”: 1654151671767, “status”: 404, “error”: “Not Found”, “message”: “Not Found”, “path”: “/” }, “statusCode”: 404, “header”: { “Content-Type”: “application/json;charset=UTF-8”, “Connection”: “keep-alive”, “Date”: “Thu, 02 Jun 2022 06:34:31 GMT”, “Transfer-Encoding”: “chunked” }, “errMsg”: “request:ok”, “cookies”: [] }

回复 FullStack: 谢谢!!!你这个就对了呀。但我这里返回的是我下面的报错,是不是跟其他全局设置还有关系

uni.request({
url: ‘http://32i74e6621.qicp.vip:8010’,
method: ‘GET’,
data: null,
header: {
“content-type”: ‘application/json;charset=UTF-8’
},
success: (res) => {
console.log(res)
},
fail: (res) => {
console.log(res)
}
}); {“errMsg”:“request:fail abort statusCode:-1 Failed to connect to 32i74e6621.qicp.vip/127.0.0.1:8010”}

在使用 uni-appuni.request 进行网络请求时,如果遇到特定域名异常报错,可能是由于多种原因导致的。以下是一些常见的问题及解决方法:

1. 跨域问题

  • 问题描述: 如果你的请求是跨域的,浏览器会阻止请求,导致请求失败。
  • 解决方法:
    • 确保服务器端配置了正确的 CORS(跨域资源共享)策略,允许你的域名访问。
    • 如果你有后端控制权,可以在服务器端设置 Access-Control-Allow-Origin 头,允许你的前端域名访问。
    • 如果你无法修改服务器配置,可以考虑使用代理服务器来绕过跨域限制。

2. SSL/TLS 证书问题

  • 问题描述: 如果目标域名使用了自签名证书或过期的 SSL/TLS 证书,可能会导致请求失败。
  • 解决方法:
    • 确保目标域名的 SSL/TLS 证书是有效的,并且由受信任的证书颁发机构签发。
    • 如果是自签名证书,可以在开发环境中临时忽略证书验证(不推荐在生产环境中使用)。

3. 域名解析问题

  • 问题描述: 如果域名无法正确解析到 IP 地址,请求会失败。
  • 解决方法:
    • 检查域名是否正确,确保域名解析正常。
    • 可以尝试使用 pingnslookup 命令来检查域名解析是否正常。

4. 网络问题

  • 问题描述: 网络连接不稳定或目标服务器不可达,可能导致请求失败。
  • 解决方法:
    • 检查网络连接是否正常。
    • 尝试使用其他网络环境(如切换到移动数据或不同的 Wi-Fi)进行测试。

5. 请求超时

  • 问题描述: 如果请求时间过长,可能会导致请求超时。
  • 解决方法:
    • uni.request 中设置 timeout 参数,增加请求的超时时间。
    • 检查服务器响应时间,优化服务器性能。

6. 请求头或参数问题

  • 问题描述: 如果请求头或参数不正确,服务器可能会拒绝请求。
  • 解决方法:
    • 检查请求头和参数是否符合服务器要求。
    • 确保 Content-TypeAuthorization 等请求头设置正确。

7. 服务器端问题

  • 问题描述: 服务器端可能出现问题,如服务宕机、接口错误等。
  • 解决方法:
    • 检查服务器日志,查看是否有错误信息。
    • 联系服务器管理员,确认服务器状态。

8. uni-app 配置问题

  • 问题描述: uni-app 的配置可能影响请求行为。
  • 解决方法:
    • 检查 manifest.json 中的网络请求配置,确保没有限制请求。
    • 确保 uni.requesturl 参数正确。

示例代码

uni.request({
    url: 'https://example.com/api', // 替换为你的目标域名
    method: 'GET',
    timeout: 10000, // 设置超时时间
    success: (res) => {
        console.log('请求成功', res.data);
    },
    fail: (err) => {
        console.error('请求失败', err);
    }
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!