目的
- ATS(App Transport Security)の挙動確認。
- NSAllowsArbitraryLoadsとNSAllowsArbitraryLoadsInWebContentの設定による挙動をiOS9, iOS10で確認する。
環境
- Xcode Version 8.1, Objective-C
- iPhone5 10.0.2
- iPhone7 Plus 10.1
- iPhoneSE 9.3.2
- iPhone6 8.2
- iOS8の端末では関係無いとは思うが念のため確認。
準備
- http:// でも https:// でもアクセスできるURLを用意
- ATSに対応しているか確認(Macのターミナルで下記を実行)
nscurl --ats-diagnostics https://example.com
結果
- 表示・データ取得できた場合を"◯", 表示・データ取得できなかった場合を"×"
- NSAllowsArbitraryLoadsInWebContentの "-" は Info.plistに設定しないという意味
- NSAllowsArbitraryLoadsInWebContentは表示の都合で省略
UIWebViewでの表示
NSAllowsArbitraryLoads |
NSAllows...InWebContent |
iOS8 |
iOS9 |
iOS10.0.2 |
iOS10.1 |
NO |
NO |
◯ |
◯ |
◯ |
◯ |
NO |
YES |
◯ |
◯ |
◯ |
◯ |
NO |
- |
◯ |
◯ |
◯ |
◯ |
YES |
- |
◯ |
◯ |
◯ |
◯ |
YES |
NO |
◯ |
◯ |
◯ |
◯ |
YES |
YES |
◯ |
◯ |
◯ |
◯ |
NSAllowsArbitraryLoads |
NSAllows...InWebContent |
iOS8 |
iOS9 |
iOS10.0.2 |
iOS10.1 |
NO |
NO |
◯ |
× |
× |
× |
NO |
YES |
◯ |
× |
◯ |
◯ |
NO |
- |
◯ |
× |
× |
× |
YES |
- |
◯ |
◯ |
◯ |
◯ |
YES |
NO |
◯ |
◯ |
× |
× |
YES |
YES |
◯ |
◯ |
◯ |
◯ |
WKWebViewでの表示
NSAllowsArbitraryLoads |
NSAllows...InWebContent |
iOS8 |
iOS9 |
iOS10.0.2 |
iOS10.1 |
NO |
NO |
◯ |
◯ |
◯ |
◯ |
NO |
YES |
◯ |
◯ |
◯ |
◯ |
NO |
- |
◯ |
◯ |
◯ |
◯ |
YES |
- |
◯ |
◯ |
◯ |
◯ |
YES |
NO |
◯ |
◯ |
◯ |
◯ |
YES |
YES |
◯ |
◯ |
◯ |
◯ |
NSAllowsArbitraryLoads |
NSAllows...InWebContent |
iOS8 |
iOS9 |
iOS10.0.2 |
iOS10.1 |
NO |
NO |
◯ |
× |
× |
× |
NO |
YES |
◯ |
× |
◯ |
◯ |
NO |
- |
◯ |
× |
× |
× |
YES |
- |
◯ |
◯ |
◯ |
◯ |
YES |
NO |
◯ |
◯ |
× |
× |
YES |
YES |
◯ |
◯ |
◯ |
◯ |
NSURLSession
NSAllowsArbitraryLoads |
NSAllows...InWebContent |
iOS8 |
iOS9 |
iOS10.0.2 |
iOS10.1 |
NO |
NO |
◯ |
◯ |
◯ |
◯ |
NO |
YES |
◯ |
◯ |
◯ |
◯ |
NO |
- |
◯ |
◯ |
◯ |
◯ |
YES |
- |
◯ |
◯ |
◯ |
◯ |
YES |
NO |
◯ |
◯ |
◯ |
◯ |
YES |
YES |
◯ |
◯ |
◯ |
◯ |
NSAllowsArbitraryLoads |
NSAllows...InWebContent |
iOS8 |
iOS9 |
iOS10.0.2 |
iOS10.1 |
NO |
NO |
◯ |
× |
× |
× |
NO |
YES |
◯ |
× |
× |
× |
NO |
- |
◯ |
× |
× |
× |
YES |
- |
◯ |
◯ |
◯ |
◯ |
YES |
NO |
◯ |
◯ |
× |
× |
YES |
YES |
◯ |
◯ |
× |
× |
注意しなければならないのはNSAllowsArbitraryLoadsInWebContent
をInfo.plistに追加した時点でiOS10でNSURLSession
はhttpでの通信ができなくなるということ。
Exception Domains
を設定することで指定したドメインのみhttpで通信可能。
以上