Maison  >  Article  >  interface Web  >  Le packaging cloud uniapp ne peut pas demander le réseau

Le packaging cloud uniapp ne peut pas demander le réseau

WBOY
WBOYoriginal
2023-05-22 09:14:361409parcourir

En tant qu'outil de développement multiplateforme, uniapp présente de nombreuses commodités dans le processus de développement, mais lors de l'exécution du packaging cloud, nous pouvons rencontrer des problèmes lors de la demande du réseau.

Récemment lors du développement d'uniapp, j'ai utilisé les fonctions cloud d'uniCloud et l'interface API pour agréger les données, mais j'ai rencontré le problème de ne pas pouvoir demander le réseau lors du packaging cloud, ce qui m'a beaucoup angoissé.

Après de nombreux tests et interrogations de documents pertinents, j'ai découvert que cela était dû au fait que le mode sandbox était activé par défaut par le package cloud uniapp. En mode sandbox, les requêtes réseau sont dans un état restreint et ne peuvent pas être adressées au réseau externe.

Donc, je présenterai ensuite en détail comment résoudre le problème selon lequel le packaging cloud uniapp ne peut pas demander le réseau.

Résoudre le problème selon lequel le packaging cloud uniapp ne peut pas demander le réseau

Option 1 : activer le mode non-sandbox

Avant le packaging cloud, nous devons modifier la configuration du packaging et désactiver le mode sandbox d'uniapp, afin de pouvoir résoudre le problème que le packaging cloud ne peut pas poser de problèmes de réseau. Nous ajoutons le code suivant au fichier 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节点的functionUrlrrreee

Comme indiqué dans le code ci-dessus, nous devons ajouter un sandboxau app-plus code> node >Configuration, définissez-le sur <code>false pour activer le mode non-sandbox.

Mais il convient de noter que l'activation du mode non-bac à sable comportera certains risques de sécurité, donc ne l'utilisez que lorsque le scénario d'application est très nécessaire. 🎜🎜Option 2 : Ajouter une liste blanche de réseau🎜🎜Une autre solution consiste à ajouter une liste blanche de réseau pour permettre aux applications d'accéder aux réseaux externes. Nous pouvons y parvenir en ajoutant le code suivant dans le fichier manifest.json : 🎜rrreee🎜 Plus précisément, nous devons ajouter la configuration suivante sous le nœud app-plus : 🎜 rrreee🎜Dans le code ci-dessus, l'attribut sslPinning du nœud networkSecurity est utilisé pour assurer la sécurité des requêtes réseau, tandis que le functionUrl du <code>cloud Nœud L'attribut ajoute une liste blanche de requêtes réseau à notre application, permettant à notre application d'accéder à l'interface API. 🎜🎜Jusqu'à présent, nous avons résolu avec succès le problème selon lequel Uniapp Cloud Packaging ne peut pas demander le réseau. Si vous rencontrez également des problèmes similaires, j'espère que cet article pourra vous aider. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn