Hatena::ブログ(Diary)

三千世界のインターネットで烏と共に このページをアンテナに追加 RSSフィード Twitter

絶対に挫折しないiPhoneアプリ開発入門シリーズ
【絶対に挫折しないiPhoneアプリ開発入門】記事一覧
iPhoneデータベース入門(SQLite)シリーズ
簡単写真アルバムアプリをつくろう
絶対に挫折しない最強言語Python入門シリーズ
パソコンライフが180度変わる、神キーボードHHKB(Happy Hacking Keyboard)

 | 

2015-09-10

【Xcode7,iOS9】エラー解決:App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.

Xcode警告への対処、解決
エラー:App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.

f:id:kazukingband:20150910171422p:image

【動作環境】
Mac OS X Yosemite ver.10.10.5
Xcode ver.7.0 beta 6


Xcode7でのビルド
執筆時点(2015年9月10日)にご留意を。


iOS9のApp Transport Security、略してAPS。
どこか少しでも通信を行うiPhoneアプリを作るなら避けては通れないでしょう。


ATS が有効の場合、http通信はできません。
https通信が求められます。


https通信を推奨するのがAppleの方針でしょう。
この記事ではとりあえずApp Transport Security(APS)を無効にして、https通信ではなくhttp通信で通信を行うことができる現実的な方法を示しておきます。


Info.plistにNSAppTransportSecurity (Dictionary)を追加し、NSAllowsArbitraryLoads (Bool)をYESに設定します。

注意して欲しいのは、(AppName)Tests.mというようなテストがある場合、その下位にあるInfo.plistでもこの設定をしておくことです(Info.plistが2つある時、片方のplistで設定し忘れを起こすことがあります。plistに設定したのになんでhttp通信できないんだ!となる時はここだったりします)。

まずはplistを探す。
f:id:kazukingband:20150910173451p:image

こんな人もいるはず。
f:id:kazukingband:20150910173606p:image


そうすると表が出てくると思います。
どこでもいいので+を押して、NSAppTransportSecurity (Dictionary)をまず追加してください。

ありがたく候補が出てきてくれるのですが、この中にないため手書きで追加。
f:id:kazukingband:20150910174040p:image

そのままだと型がStringになっているのでDictionaryにしてください。
f:id:kazukingband:20150910174237p:image

NSAppTransportSecurity (Dictionary)の下位にNSAllowsArbitraryLoads (Bool)を追加
エレベーター降りるみたいな左端の矢印が下に向いてますよね、下位に設定できているか確認して追加してください。
f:id:kazukingband:20150910174324p:image

NSAllowsArbitraryLoadsも手書き、Bool型に。そしてYESを設定
f:id:kazukingband:20150910174636p:image


ここで注意して欲しいのはスペルミスです。
スペルミスはどんな熟練者であっても決して軽視できないミスです。

スペルミス例:AllowsがAllowesになっていないか、ArbitraryがArbitaryになっていないか



以上でhttp通信が可能になったかと思います。

NSAllowsArbitraryLoads (Bool)をYESにすることですべてのドメインのATSを無効にできます(つまり、デフォルトはNO)。
他にも、特定のドメインのみhttp通信を有効にするなどの方法もあります。

今後Appleはよりセキュアな通信を推奨する方針なのでしょう。

初心者初心者 2016/04/25 10:24 ありがとうございます。参考になりました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/kazukingband/20150910/1441875442
 |