크로스 플랫폼 개발을 위한 도구인 uniapp은 개발 과정에서 많은 편의성을 제공하지만, 클라우드 패키징을 수행할 때 네트워크 요청 시 문제가 발생할 수 있습니다.
최근 유니앱을 개발하면서 데이터 집계를 위해 유니클라우드의 클라우드 기능과 API인터페이스를 사용했는데, 클라우드 패키징 중에 네트워크를 요청할 수 없는 문제에 직면해서 굉장히 고민이 많았습니다.
많은 테스트와 관련 문서 쿼리 끝에 이는 uniapp 클라우드 패키징에서 기본적으로 샌드박스 모드가 켜져 있기 때문에 발생하는 것으로 나타났습니다. 샌드박스 모드에서는 네트워크 요청이 제한된 상태이므로 외부 네트워크에 요청할 수 없습니다.
그래서 다음에는 유니앱 클라우드 패키징이 네트워크를 요청할 수 없는 문제를 해결하는 방법을 자세히 소개하겠습니다.
클라우드 패키징 전에 패키징 구성을 수정하고 uniapp의 샌드박스 모드를 꺼야 합니다. 클라우드 패키징이 네트워크 문제를 요청할 수 없는 문제. manifest.json
파일에 다음 코드를 추가합니다. 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
rrreee
app-plus에 <code>sandbox
를 추가해야 합니다. code> node >Configuration에서 비샌드박스 모드를 활성화하려면 false
로 설정하세요. 그러나 비샌드박스 모드를 켜면 특정 보안 위험이 있으므로 응용 시나리오가 매우 필요한 경우에만 작동해야 한다는 점에 유의해야 합니다. 🎜🎜옵션 2: 네트워크 허용 목록 추가🎜🎜또 다른 해결 방법은 애플리케이션이 외부 네트워크에 액세스할 수 있도록 네트워크 허용 목록을 추가하는 것입니다. manifest.json
파일에 다음 코드를 추가하면 이를 달성할 수 있습니다. 🎜rrreee🎜 특히 app-plus
노드 아래에 다음 구성을 추가해야 합니다. 🎜 rrreee🎜위 코드에서 networkSecurity
노드의 sslPinning
속성은 네트워크 요청의 보안을 보장하는 데 사용되며, 클라우드의 <code>functionUrl은
노드 속성은 애플리케이션에 네트워크 요청 화이트리스트를 추가하여 애플리케이션이 API 인터페이스에 액세스할 수 있도록 합니다. 🎜🎜지금까지 uniapp 클라우드 패키징이 네트워크를 요청할 수 없는 문제를 성공적으로 해결했습니다. 혹시 비슷한 문제가 발생한다면 이 글이 도움이 되기를 바랍니다. 🎜위 내용은 uniapp 클라우드 패키징이 네트워크를 요청할 수 없습니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!