最近Cordova 5.0(およびCordova Android 4.0))にアップグレードし、それ以降、アプリは外部リソースにアクセスできなくなりました。
私はまだ持っています <access Origin="*" />
(以前と同様)config.xmlで、まだ<uses-permission Android:name="Android.permission.INTERNET" />
AndroidManifest.xmlで(以前と同様)、ajax呼び出しは説明なしで拒否されます( "textStatus"パラメーターは "error"、 "errorThrown"パラメーターはnull、xhr.state()は "rejected"を返します)。
サーバーにリクエストが送信されていないことを確認したため、Androidによって停止されているように見えますが、ログには理由に関する説明がありません...
問題のURLにアクセスできるのは、アプリからではなく、Androidブラウザからです。
Ajaxリクエストは Backbone.js のBackbone.sync()の呼び出しを介して行われ、最終的にjqueryの$ .ajax()を呼び出します。呼び出しの方法については何も変更していません...単にCordovaをアップグレードしました。
ネットワーク要求の新しい要件/セットアップ、Cordova 5.0、または以前のCordovaバージョンとは異なる方法で行う必要があるものはありますか?
Androidおよび/またはCordovaがリクエストを拒否している理由に関する詳細情報を取得できる方法を知っている人はいますか?
犯人を[email protected]コルドバプラットフォームまで追跡しました。現在、新しい cordova-plugin-whitelist プラグインが必要です。
でインストールできます
cordova plugin add cordova-plugin-whitelist
または追加することにより
<plugin name="cordova-plugin-whitelist" spec="1" />
config.xmlに追加すると、
<allow-navigation href="*" />
古いものの代わりに、<access Origin="*" />
鬼ごっこ。
このような問題が発生したときにログが「ホワイトリスト拒否」エラーメッセージを吐き出さないことは少し面倒ですが(時間を大幅に節約できたかもしれません)、多分それは後で来るでしょう。
Cordova 6.Xでは、組み込みのホワイトリストプラグインを削除し、プラグインの新しいバージョンを再インストールする必要があります。
cordova plugin remove cordova-plugin-whitelist
プラグインを再インストールします
cordova plugin add cordova-plugin-whitelist
そして、<allow-navigation href="*" />
の代わりにconfig.xmlファイルに<access Origin="*" />
私の場合、このトリックはうまくいきました。
cordova 6.x.xを使用している場合、組み込みのcordova-plugin-whitelistをアンインストールする必要があります。
cordovaプラグインはcordova-plugin-whitelistを削除します
を使用して再インストールします
cordovaプラグインはcordova-plugin-whitelistを追加
問題が解決しない場合でも、コマンドプロンプトを再起動して試してください。
二つのこと
- 使用しているajax URLがクロスオリジンリクエストを許可していることを確認してください
- オリジン間リクエストを行う際に関連するヘッダーを渡しますか
読む