ATS(App Transport Security)を"Xcode8 beta4"+"iOS10 beta4"でテストしてみた
いつも通りbeta4が出たので検証してみた。
テスト方法
テスト方法は、プログラムの使い回しで基本今までを踏襲していますが、下記赤字が変更点となります。
- iOS10は、iOS10.0 beta4を使用
- iOS9は、iOS9.3.3を使用
- ATSは、最初Xcode7BuildのipaとiOS9の組み合わせで発動していたので、Xcode7BuildとXcode8Buildで違いでるか比較
- NSAllowsArbitraryLoadsInWebContentの設定で挙動がどう変わるか確認
- HTTPSは、URLに
https://www.apple.com/
を使用 - HTTPは、URLに
http://www.yahoo.co.jp/
を使用 - HTTP(LAN)は、MAMPを使用してURLに
http://192.168.0.12/
を使用 - UIWebView / WKWebView / NSURLSession / SFSafariViewController の4つで比較
- キャッシュ?のようなものが残り不自然な挙動があったため、テスト毎にテストアプリをインストールし直して実行
- ATSは表のKeyのみを設定
- 補足としてnoneとなっているものはKeyを削除している状態のこと
↓↓↓以下結果 (赤字が前回と比較して変わった点 ※今回はなし)↓↓↓
Xcode7.3.1 Build
Xcode8.0 beta4 Build
結果
NSAllowsArbitraryLoadsInWebContent
が相変わらずWKWebViewではなく、UIWebViewに効いている。- さらにこの時、UIWebViewDelegateの
webViewDidFinishLoad(_:)
が2回呼ばれる不可解な現象も前回と同様に発生。
Appleで改めてNSAllowsArbitraryLoadsInWebContentの内容を確認したところ、WKWebViewとUIWebView(iOSのみ)に適用されるようなので、WKWebViewに効いていないのはバグぽい。(NSURLSessionは、NSAllowsArbitraryLoadsInWebContentの影響を受けないような内容も書いてあるぽい?英語力ないので正しくはわかりません。)
また、同列のKEYに新しく下記がいつのまにか追加されていたので、近いうちに動作を確認できたらする予定。(Xcode8 beta4ではKEYの候補が表示されなかったので未実装の可能性もあり。)
NSAllowsArbitraryLoadsInMedia
- AVFoundationからAPIを使ったメディアのロードの許可/不許可ぽい
NSAllowsLocalNetworking
- ATSを無視してLocal IPからのリソースの読み込みの許可/不許可
NSRequiresCertificateTransparency
===関連記事===