7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

iOS9でThe resource could not be loaded because the App Transport Security policy requires the use of a secure connection.のエラーが出る場合のメモ

Last updated at Posted at 2015-10-07

##問題
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でもエラーになりません。

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?