Swift・iOS

Swiftを中心に学んだことを記録に残すブログです。技術に関係ない記事もたまに書いています。

【Swift】WKWebViewでhttpsのページを表示できない原因(ATS)

■はじめに

WKWebViewでhttpsのページを表示できずはまってしまった時に調べたことのまとめ。

 

■開発環境

Xcode 9.4.1

・Swift 4.1.2

 

■ 現象

httpのページを表示するにはATSの設定が必要ですが、一部httpsのページなのに表示できないもの(画面が真っ白になって表示されないもの)があることに気づきました。念のためATSのException Domainの設定をしてみたのですが、結果は変わらず。

 

■原因

該当のURLをnscurlのコマンドで確認したところ、サーバーへの安全な接続を確立できないとメッセージがでました。リダイレクト関連の通信でhttpがあるとATSによって弾かれてしまうようですね。

※参考:

WkWebviewで外部のWebサイトに繋がらないときにチェックすること

iOS - WKWebViewでリダイレクトされた時にページに遷移しない(60437)|teratail

  

リダイレクト先を確認する方法に関しては以下記事で紹介されています。

※参考:swift(ver2.2)でリダイレクト先のURLを取得する

 

■対応

リダイレクト先もException Domainの設定に含めるか、非推奨ですがAllowsArbitraryLoadsをYESにして無効化すると表示できるようになります。

 

■おわりに

 ATSは設定によっては申請時にリジェクトされるリスクがある箇所かと思うので、より調べてみます。

 

※追記(2018/8/29)

リンク先をタップしても何も反応しない現象に関しては以下記事にまとめました。

【Swift】WKWebViewでリンク先が開けない場合の対処法(ATS/target=”_blank”) - Swift実践ブログ

 

■関連リンク

WKWebView - WebKit | Apple Developer Documentation

Security - Apple Developer

WkWebviewで外部のWebサイトに繋がらないときにチェックすること

iOS - WKWebViewでリダイレクトされた時にページに遷移しない(60437)|teratail

swift(ver2.2)でリダイレクト先のURLを取得する