Heim > Web-Frontend > uni-app > Uniapp Cloud Packaging kann das Netzwerk nicht anfordern

Uniapp Cloud Packaging kann das Netzwerk nicht anfordern

WBOY
Freigeben: 2023-05-22 09:14:36
Original
1505 Leute haben es durchsucht

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.

Lösen Sie das Problem, dass die Uniapp-Cloud-Verpackung das Netzwerk nicht anfordern kann

Option 1: Nicht-Sandbox-Modus aktivieren

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
}
Nach dem Login kopieren

如上述代码所示,我们需要在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"]
}
Nach dem Login kopieren

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

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

以上代码中,networkSecurity节点中的sslPinning属性用于保证网络请求的安全性,而cloud节点的functionUrlrrreee

Wie im obigen Code gezeigt, müssen wir sandboxzur 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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage