Als Tool für die plattformübergreifende Entwicklung bietet Uniapp viele Vorteile im Entwicklungsprozess. Bei der Cloud-Paketierung können jedoch Probleme beim Anfordern des Netzwerks auftreten.
Während der Entwicklung von uniapp habe ich kürzlich die Cloud-Funktionen und die API-Schnittstelle von uniCloud zum Aggregieren von Daten verwendet, bin jedoch auf das Problem gestoßen, dass ich während der Cloud-Paketierung das Netzwerk nicht anfordern konnte, was mich sehr beunruhigte.
Nach vielen Tests und der Abfrage relevanter Dokumente habe ich herausgefunden, dass dies daran liegt, dass der Sandbox-Modus standardmäßig durch die Uniapp-Cloud-Paketierung aktiviert ist. Im Sandbox-Modus befinden sich Netzwerkanfragen in einem eingeschränkten Zustand und können keine Anfragen an das externe Netzwerk stellen.
Als nächstes werde ich detailliert vorstellen, wie das Problem gelöst werden kann, dass Uniapp-Cloud-Pakete das Netzwerk nicht anfordern können.
Vor der Cloud-Verpackung müssen wir die Verpackungskonfiguration ändern und den Sandbox-Modus von Uniapp deaktivieren, um das Problem zu lösen Problem, dass Cloud-Paketierung keine Netzwerkprobleme anfordern kann. Wir fügen der Datei manifest.json
den folgenden Code hinzu: 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
sandbox
zur Datei app-plus hinzufügen. code> node >Configuration, setzen Sie ihn auf <code>false
, um den Nicht-Sandbox-Modus zu aktivieren. Es ist jedoch zu beachten, dass das Aktivieren des Nicht-Sandbox-Modus gewisse Sicherheitsrisiken birgt. Betreiben Sie ihn daher nur, wenn das Anwendungsszenario unbedingt erforderlich ist. 🎜🎜Option 2: Eine Netzwerk-Whitelist hinzufügen🎜🎜Eine andere Lösung besteht darin, eine Netzwerk-Whitelist hinzuzufügen, um Anwendungen den Zugriff auf externe Netzwerke zu ermöglichen. Wir können dies erreichen, indem wir den folgenden Code in die Datei manifest.json
einfügen: 🎜rrreee🎜 Konkret müssen wir die folgende Konfiguration unter dem Knoten app-plus
hinzufügen: 🎜 rrreee🎜Im obigen Code wird das Attribut sslPinning
im Knoten networkSecurity
verwendet, um die Sicherheit von Netzwerkanforderungen zu gewährleisten, während die functionUrl der <code>cloud
-Knoten Das -Attribut fügt unserer Anwendung eine Netzwerkanfrage-Whitelist hinzu, sodass unsere Anwendung auf die API-Schnittstelle zugreifen kann. 🎜🎜Bisher haben wir das Problem, dass Uniapp-Cloud-Pakete das Netzwerk nicht anfordern können, erfolgreich gelöst. Wenn Sie auch auf ähnliche Probleme stoßen, kann Ihnen dieser Artikel hoffentlich helfen. 🎜Das obige ist der detaillierte Inhalt vonUniapp Cloud Packaging kann das Netzwerk nicht anfordern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!