uni-app 3.1.2.20210206版HBuilder X ajax请求局域网IP失败

uni-app 3.1.2.20210206版HBuilder X ajax请求局域网IP失败

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

产品分类:HTML5+

手机系统:iOS

手机系统版本号:IOS 14

手机厂商:苹果

手机机型:IPHONE X

打包方式:云端


示例代码:

mui.ajax("http://192.168.1.47:8080/spf-bim/api/api_apiLogin_createToken.action", {  
    data: {  
        'userName': "lisq",  
        'password': "Spf123",  
        'clientId': "222312313",  
        'equipment': plus.os.name  
    },  
    dataType: 'json',  
    type: 'post',  
    timeout: 15000,  
    success: function(data) {  
        alert(JSON.stringify(data));  
    },  
    error: function(data) {  
        plus.nativeUI.closeWaiting();  
        alert(JSON.stringify(data));  
    },  
    complete: function(XMLHttpRequest, status) {  
        if(status == 'timeout') {  
            mui.toast(language_js("Login Timeout!"));  
            plus.nativeUI.closeWaiting();  
        }  
    }  
})

操作步骤:

使用ajax请求服务器内容

mui.ajax("http://192.168.1.47:8080/spf-bim/api/api_apiLogin_createToken.action", {
    data: {
        'userName': "lisq",
        'password': "Spf123",
        'clientId': "222312313",
        'equipment': plus.os.name
    },
    dataType: 'json',
    type: 'post',
    timeout: 15000,
    success: function(data) {
        alert(JSON.stringify(data));
    },
    error: function(data) {
        plus.nativeUI.closeWaiting();
        alert(JSON.stringify(data))
    },
    complete: function(XMLHttpRequest, status) {
        if(status == 'timeout') {
            mui.toast(language_js("Login Timeout!"));
            plus.nativeUI.closeWaiting();
        }
    }

更多关于uni-app 3.1.2.20210206版HBuilder X ajax请求局域网IP失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

问题补充; 又拿了一部IPHONE 7P 测试 连用域名都访问不了了 错误都是一样的 使用3.0.5.20210107打包的则没有任何问题

更多关于uni-app 3.1.2.20210206版HBuilder X ajax请求局域网IP失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个典型的iOS设备访问局域网IP地址的问题。在iOS 14+系统中,由于安全策略限制,默认不允许直接访问非HTTPS的局域网IP地址。

解决方案:

  1. 检查manifest.json配置,确保已添加以下内容:
"networkTimeout": {
  "request": 15000
},
"plus": {
  "http": {
    "timeout": 15000
  }
}
  1. 改用uni.request代替mui.ajax:
uni.request({
  url: 'http://192.168.1.47:8080/spf-bim/api/api_apiLogin_createToken.action',
  method: 'POST',
  data: {
    userName: "lisq",
    password: "Spf123",
    clientId: "222312313",
    equipment: plus.os.name
  },
  success: (res) => {
    console.log(res.data);
  },
  fail: (err) => {
    console.error(err);
  }
});
  1. 如果必须使用HTTP协议,需要在iOS设备上信任该IP地址:
  • 在Xcode中修改Info.plist文件
  • 或修改manifest.json添加:
"ios": {
  "ATS": {
    "NSAllowsArbitraryLoads": true
  }
}
回到顶部