ホームページ  >  記事  >  ウェブフロントエンド  >  uniapp クラウド パッケージはネットワークを要求できません

uniapp クラウド パッケージはネットワークを要求できません

WBOY
WBOYオリジナル
2023-05-22 09:14:361409ブラウズ

uniapp はクロスプラットフォーム開発ツールとして開発プロセスにおいて多くの利便性を備えていますが、クラウドパッケージ化を行う場合、ネットワークを要求する際に問題が発生する可能性があります。

最近uniappの開発中にuniCloudのクラウド機能やAPIインターフェースを利用してデータを集計していたのですが、クラウドパッケージ化の際にネットワークリクエストができないという問題に遭遇し、とても悩みました。

多くのテストと関連ドキュメントのクエリを行った結果、デフォルトでユニアプリ クラウド パッケージ化によって有効になっているサンドボックス モードが原因であることがわかりました。サンドボックス モードでは、ネットワーク リクエストは制限された状態にあり、外部ネットワーク。

そこで、次にuniappクラウドパッケージングがネットワークリクエストできない問題の解決方法を詳しく紹介します。

ユニアプリ クラウド パッケージングがネットワークを要求できない問題を解決する

オプション 1: 非サンドボックス モードを有効にする

クラウド パッケージ化する前に、パッケージング構成を変更し、 uniapp Box モードのサンドボックスがオフになっているため、クラウド パッケージ化がネットワークを要求できない問題を解決できます。次のコードを manifest.json ファイルに追加します。

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

上記のコードに示すように、sandbox# を app-plus# に追加する必要があります。 ## ノード ##Configuration を false に設定して、非サンドボックス モードを有効にします。 ただし、非サンドボックス モードをオンにすると、特定のセキュリティ リスクが生じるため、アプリケーション シナリオで非常に必要な場合にのみ操作する必要があることに注意してください。

オプション 2: ネットワーク ホワイトリストを追加する

もう 1 つの解決策は、アプリケーションが外部ネットワークにアクセスできるようにネットワーク ホワイトリストを追加することです。これを実現するには、

manifest.json

ファイルに次のコードを追加します。 <pre class='brush:php;toolbar:false;'>&quot;app-plus&quot;:{ &quot;networkTimeout&quot;:{ &quot;request&quot;:30000, &quot;connectSocket&quot;:30000, &quot;uploadFile&quot;:30000, &quot;downloadFile&quot;:30000 }, &quot;debug&quot;:false, &quot;subpackages&quot;:[], &quot;permission&quot;:{ &quot;scope.userLocation&quot;:{ &quot;desc&quot;:&quot;你的位置信息将用于小程序位置接口的效果展示&quot; } }, &quot;navigateToMiniProgramAppIdList&quot;:[], &quot;preloadRule&quot;:{ &quot;page&quot;:{ &quot;alias&quot;:[], &quot;path&quot;:[] }, &quot;network&quot;:{ &quot;include&quot;:[ &quot;**/**/*.png&quot;, &quot;**/**/*.jpg&quot;, &quot;**/**/*.jpeg&quot;, &quot;**/**/*.gif&quot;, &quot;**/**/*.svg&quot;, &quot;**/**/*.js&quot;, &quot;**/**/*.css&quot;, &quot;**/**/*.wxss&quot;, &quot;**/**/*.wxml&quot; ], &quot;exclude&quot;:[] }, &quot;package&quot;:{ &quot;exclude&quot;:[], &quot;include&quot;:[] }, &quot;plugin&quot;:{ &quot;exclude&quot;:[], &quot;include&quot;:[] } }, &quot;navigateToKeepAliveList&quot;:[], &quot;subscribeMessage&quot;:{ &quot;tmplIds&quot;:[] }, &quot;usingComponents&quot;:{}, &quot;sandbox&quot;:false, &quot;style&quot;:{ &quot;navigationBarTitleText&quot;:&quot;&quot; }, &quot;window&quot;:{ &quot;navigationBarBackgroundColor&quot;:&quot;#fff&quot;, &quot;navigationBarTextStyle&quot;:&quot;black&quot;, &quot;navigationBarTitleText&quot;:&quot;uni-app&quot;, &quot;backgroundColor&quot;:&quot;#F5F5F5&quot;, &quot;backgroundTextStyle&quot;:&quot;light&quot;, &quot;enablePullDownRefresh&quot;:false, &quot;enableBackToTop&quot;:false, &quot;navigationStyle&quot;:&quot;default&quot; }, &quot;networkTimeout&quot;:{ &quot;request&quot;:10000, &quot;connectSocket&quot;:10000, &quot;uploadFile&quot;:10000, &quot;downloadFile&quot;:10000 }, &quot;networkSecurity&quot;:{ &quot;sslPinning&quot;:true }, &quot;navigateToMiniProgram&quot;:{ &quot;appParam&quot;:{ &quot;xxParam&quot;:&quot;yy&quot; } }, &quot;plugins&quot;:{ &quot;myPlugin&quot;:{ &quot;version&quot;:&quot;*&quot;, &quot;provider&quot;:&quot;wxidxxxxxxxxxxxxxxxxx&quot; } }, &quot;cloud&quot;:{ &quot;functionUrl&quot;:&quot;https://api.xxx.com&quot; }, &quot;requiredBackgroundModes&quot;:[&quot;audio&quot;] }, &quot;networkTimeout&quot;:{ &quot;request&quot;:10000, &quot;connectSocket&quot;:10000, &quot;uploadFile&quot;:10000, &quot;downloadFile&quot;:10000 }, &quot;networkSecurity&quot;:{ &quot;sslPinning&quot;:true }, &quot;navigateToMiniProgram&quot;:{ &quot;appParam&quot;:{ &quot;xxParam&quot;:&quot;yy&quot; } }, &quot;plugins&quot;:{ &quot;myPlugin&quot;:{ &quot;version&quot;:&quot;*&quot;, &quot;provider&quot;:&quot;wxidxxxxxxxxxxxxxxxxx&quot; } }, &quot;cloud&quot;:{ &quot;functionUrl&quot;:&quot;https://api.xxx.com&quot; }, &quot;requiredBackgroundModes&quot;:[&quot;audio&quot;] } </pre> 具体的には、

app-plus

ノードの下に次の構成を追加する必要があります。 : <pre class='brush:php;toolbar:false;'>&quot;networkSecurity&quot;:{ &quot;sslPinning&quot;:true }, &quot;cloud&quot;:{ &quot;functionUrl&quot;:&quot;https://api.xxx.com&quot; }</pre> 上記のコードでは、

networkSecurity

ノードの sslPinning 属性を使用してネットワーク リクエストのセキュリティを確保し、cloud ノードの functionUrl 属性は、ネットワーク リクエストのホワイトリストをアプリケーションに追加し、アプリケーションが API インターフェイスにアクセスできるようにします。 これまでのところ、uniapp クラウド パッケージングがネットワークを要求できない問題は解決しましたが、同様のトラブルに遭遇した場合は、この記事が役立つことを願っています。

以上がuniapp クラウド パッケージはネットワークを要求できませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。