uniapp はクロスプラットフォーム開発ツールとして開発プロセスにおいて多くの利便性を備えていますが、クラウドパッケージ化を行う場合、ネットワークを要求する際に問題が発生する可能性があります。
最近uniappの開発中にuniCloudのクラウド機能やAPIインターフェースを利用してデータを集計していたのですが、クラウドパッケージ化の際にネットワークリクエストができないという問題に遭遇し、とても悩みました。
多くのテストと関連ドキュメントのクエリを行った結果、デフォルトでユニアプリ クラウド パッケージ化によって有効になっているサンドボックス モードが原因であることがわかりました。サンドボックス モードでは、ネットワーク リクエストは制限された状態にあり、外部ネットワーク。
そこで、次にuniappクラウドパッケージングがネットワークリクエストできない問題の解決方法を詳しく紹介します。
クラウド パッケージ化する前に、パッケージング構成を変更し、 uniapp Box モードのサンドボックスがオフになっているため、クラウド パッケージ化がネットワークを要求できない問題を解決できます。次のコードを manifest.json
ファイルに追加します。
"app-plus":{ "sandbox":false }
上記のコードに示すように、sandbox# を
app-plus# に追加する必要があります。 ## ノード ##Configuration を false
に設定して、非サンドボックス モードを有効にします。 ただし、非サンドボックス モードをオンにすると、特定のセキュリティ リスクが生じるため、アプリケーション シナリオで非常に必要な場合にのみ操作する必要があることに注意してください。
オプション 2: ネットワーク ホワイトリストを追加する
ファイルに次のコードを追加します。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>"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"]
}
</pre><div class="contentsignin">ログイン後にコピー</div></div>
具体的には、
ノードの下に次の構成を追加する必要があります。 : <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>"networkSecurity":{
"sslPinning":true
},
"cloud":{
"functionUrl":"https://api.xxx.com"
}</pre><div class="contentsignin">ログイン後にコピー</div></div> 上記のコードでは、networkSecurity<p> ノードの <code>sslPinning
属性を使用してネットワーク リクエストのセキュリティを確保し、cloud
ノードの functionUrl
属性は、ネットワーク リクエストのホワイトリストをアプリケーションに追加し、アプリケーションが API インターフェイスにアクセスできるようにします。 これまでのところ、uniapp クラウド パッケージングがネットワークを要求できない問題は解決しましたが、同様のトラブルに遭遇した場合は、この記事が役立つことを願っています。
以上がuniapp クラウド パッケージはネットワークを要求できませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。