2017アプリ更新を強要されるよりかはマシだな以前Google様からのお達しによりアプリのアップデートを強要されたことを書きましたが、今回は自分の都合で自作のアプリのアップデートをしようとした際にCordovaの仕様変更に対応する必要に迫られたので、誰かの役に立てばと思い記事を書きます。ハイブリッドアプリの脆弱性という意味では前回の件と似たようなものだと思うのですが、前回のように既にリリースされているアプリにまで対応を迫るということはなかったようです。'http://XXX.herokuapp.com/XXX'というエラーでデータが取得出来なくなったようです。Whitelistプラグインを使ってconfig.xmlに記載するだけではダメみたいです、通常のHTTPリクエストよりAjaxリクエストはさらに規制を強くするということでしょう。/>以下のようにindex.htmlにmetaタグを書くことでデータ取得に成功しました。'unsafe-eval'">script-srcの部分にテスト時のローカルのURLと本番で使う外部サーバーのURLをスペースで区切って記述します。default-srcに記述すれば代替出来ると書かれたサイトもありましたが、私が試した限りではscript-srcに書かないと動きませんでした。他にもあった開発時の制約(XMLHttpRequest)つい最近もう一つの別のアプリを弄っててわかったことですが、初期化データをローカルディスクから読み込む際に以下のような感じでXMLHttpRequestを使えていました。xhr.send()今現在リリースしているアプリ(確かビルドに使用したCordovaのバージョンは6.5でした)はこの方法を使って動いているのですが、手元にある今使っているCordova(version7.0.1)では使えなくなっているようです。次にアプリをバージョンアップするときは他のやり方に変更する必要があります。なんか自分がアプリをリリースする度に次のリリース時には改変を強いられるということが続くので、「またこんなことする奴が出て来たよ〜」と言われている気がするんですが考えすぎでしょうか対策としてはデータを外部サーバーに置くかファイル操作を行うプラグインを使う必要が出て来そうですが、ファイル入出力操作はandroidアプリとiPhoneアプリの仕様の違い(ファイルの設置場所等)を考慮しないといけないので面倒です。なると外部サーバーに置くかということになりそうですが、もっと簡単な回避策があります。以下のように必要なデータをHTMLファイルに埋め込んで、それを読み込むようにすることで上のコードと同じことを実現出来ました1。</script>セキュリティの観点から言っても外部サーバーからデータを取得するより安全でしょう。ネイティブアプリと違ってWebViewというブラウザーコンポーネント上で動くハイブリッドアプリは、開発時にいろいろ制約が付き纏います。それ以上にUI部分をHTMLとCSSで簡単に書けるというメリットは大きいと思います。自分がテストで使っていた端末はAndroid4.4(Kitkat)で、XMLHttpRequest(ajax)で読み込めていたローカルファイルが開発環境を変えたことで読み込めなくなったのですが、古い端末だと搭載されているブラウザの制限で元々出来ないようで、やるべきじゃなかったようです。HTMLに埋め込むやり方なら古い端末でも動作しました。