您的位置:首页 > 技术中心 > 前端框架 >

uniapp云打包无法请求网络

时间:2023-05-23 05:30

作为跨平台开发的利器,uniapp在开发过程中有着许多便利之处,但在进行云打包时,我们可能会遭遇请求网络时出现的问题。

最近在uniapp开发过程中,我使用了uniCloud的云函数,以及聚合数据的API接口,但在云打包时却遇到了无法请求网络的问题,一度让我苦恼不已。

经过多次测试和查询相关文档,我发现这是由于uniapp云打包默认开启沙箱模式导致的,而在沙箱模式下,网络请求处于限制状态,无法请求到外部网络。

那么,接下来我将为大家详细介绍如何解决uniapp云打包无法请求网络的问题。

解决uniapp云打包无法请求网络的问题

方案一:开启非沙箱模式

在云打包之前,我们需要修改打包配置,将uniapp的沙箱模式关闭,这样就可以解决云打包无法请求网络的问题。我们在manifest.json文件中添加以下代码:

"app-plus":{    "sandbox":false}

如上述代码所示,我们需要在app-plus节点中添加sandbox配置,将其设置为false即可开启非沙箱模式。

但需要注意的是,开启非沙箱模式会有一定的安全风险,因此在应用场景非常必要的情况下才进行操作。

方案二:添加网络白名单

另外一种解决方案是,添加网络白名单,允许应用程序访问外部网络。我们可以在manifest.json文件中,通过添加以下代码来实现:

"app-plus":{    "networkTimeout":{        "request":30000,        "connectSocket":30000,        "uploadFile":30000,        "downloadFile":30000    },    "debug":false,    "subpackages":[],    "permission":{        "scope.userLocation":{            "desc":"你的位置信息将用于小程序位置接口的效果展示"        }    },    "navigateToMiniProgramAppIdList":[],    "preloadRule":{        "page":{            "alias":[],            "path":[]        },        "network":{            "include":[                "**/**/*.png",                "**/**/*.jpg",                "**/**/*.jpeg",                "**/**/*.gif",                "**/**/*.svg",                "**/**/*.js",                "**/**/*.css",                "**/**/*.wxss",                "**/**/*.wxml"            ],            "exclude":[]        },        "package":{            "exclude":[],            "include":[]        },        "plugin":{            "exclude":[],            "include":[]        }    },    "navigateToKeepAliveList":[],    "subscribeMessage":{        "tmplIds":[]    },    "usingComponents":{},    "sandbox":false,    "style":{        "navigationBarTitleText":""    },    "window":{        "navigationBarBackgroundColor":"#fff",        "navigationBarTextStyle":"black",        "navigationBarTitleText":"uni-app",        "backgroundColor":"#F5F5F5",        "backgroundTextStyle":"light",        "enablePullDownRefresh":false,        "enableBackToTop":false,        "navigationStyle":"default"    },    "networkTimeout":{        "request":10000,        "connectSocket":10000,        "uploadFile":10000,        "downloadFile":10000    },    "networkSecurity":{        "sslPinning":true    },    "navigateToMiniProgram":{        "appParam":{            "xxParam":"yy"        }    },    "plugins":{        "myPlugin":{            "version":"*",            "provider":"wxidxxxxxxxxxxxxxxxxx"        }    },    "cloud":{        "functionUrl":"https://api.xxx.com"    },    "requiredBackgroundModes":["audio"]},"networkTimeout":{    "request":10000,    "connectSocket":10000,    "uploadFile":10000,    "downloadFile":10000},"networkSecurity":{    "sslPinning":true},"navigateToMiniProgram":{    "appParam":{        "xxParam":"yy"    }},"plugins":{    "myPlugin":{        "version":"*",        "provider":"wxidxxxxxxxxxxxxxxxxx"    }},"cloud":{    "functionUrl":"https://api.xxx.com"},"requiredBackgroundModes":["audio"]}

具体来说,我们需要在app-plus节点下添加以下配置:

"networkSecurity":{    "sslPinning":true},"cloud":{    "functionUrl":"https://api.xxx.com"}

以上代码中,networkSecurity节点中的sslPinning属性用于保证网络请求的安全性,而cloud节点的functionUrl属性则为我们的应用程序添加了网络请求白名单,允许我们的应用访问API接口。

至此,我们已经成功解决了uniapp云打包无法请求网络的问题,如果你也遇到了类似的困扰,希望本文能够对你有所帮助。

以上就是uniapp云打包无法请求网络的详细内容,更多请关注Gxl网其它相关文章!

热门排行

今日推荐

热门手游