##問題
iOS9にアップデートしたら、cordovaで開発中のアプリで下記のエラーが発生した。
The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.
##原因
ATS(App Transport Security)に引っかかりHTTPへのアクセスができなかったのが原因と思われます。
####ATS(App Transport Security)とは
◎参考
iOS9 : App Transport Securityの確認方法
ATS(App Transport Security) とは、iOS9とOS X 10.11から導入されるネットワークセキュリティ対策です。
基本的には、アプリとサーバーの間のネットワーク接続をSSLにすることを推奨するというもので、デフォルトの設定では、SSLではないネットワーク接続が失敗となります。 (なお、ATSが適用されるのは、iOS9用にビルドした場合のみであり、iOS8以前用にビルドされたアプリをiOS9で実行してもATSは適用されません。)
##解決策
1番簡単な解決策はATSを無効にすることです。
info.plistファイルを変更して対応することができます。
私はcordovaでビルドしたアプリケーションの為、下記にありました。
/Users/me/app/platforms/ios/hogehoge/hogehoge-Info.plist
info.plistに下記を追加します。
これで全てのサーバーのATSを無効にできます。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
全てのサーバーのATSを無効にするのは非推奨です。
そこで、特定のドメインからのアクセスしかない場合は、
下記のように無効にするドメインを指定します。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>hogehoge.com</key>
<dict>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>fugafuga.jp</key>
<dict>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
この設定を追加することで、 指定したドメインからのアクセスはhttpでもエラーになりません。