LoginSignup
5
5

More than 5 years have passed since last update.

【Xcode】iOS開発におけるビルド実行にて「App Transport Security has blocked a cleartext HTTP・・・」というエラーが発生した場合の対処方法

Last updated at Posted at 2018-05-04

環境

  • macOS HighSierra 10.13.4
  • Xcode 9.3
  • Swift 4.1

事象

ビルド実行 > シュミレータ立ち上げ 後に、
コンソールにて「HTTPがどうだ」とか言われた以下内容のエラーが発生し、正常な画面表示がされない。

エラー内容
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.

原因

App Transport Security

iOS9から導入されたAppTransportSecurityによるもので、初期設定ではHTTPS通信しか行えないように設定されている。

そのため、この設定環境下でHTTP通信を行うと同事象が発生する。

原因のコード

  1. 表示するWebページのURL文字列を定義する。
  2. そのURL文字列をURLRequest型に変換する。
  3. 変換したURLをもとに、Webページを表示する。
ViewController.swift

@IBOutlet weak var webView: UIWebView!

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    // URLをもとにサイトを表示する
    let strUrl = "http://google.com"
    let urlRequest = URLRequest(url: URL(string: strUrl)!)
    self.webView.loadRequest(urlRequest)
}

上記のwebViewにあたるUIWebViewクラスからのHTTP通信が許可されていないことによるもの。

対処方法

HTTP通信の設定を許可するよう変更する。

info.plistに変更追加する

  1. 左側に位置するNavigatorAreaで、対象のViewControllerと同階層に存在する [info.plist] を開く。
  2. 最終行にカーソルを当て [+] をクリックする。
  3. 項目の追加内容から [App Transport Security Settings] を選択する。
  4. 選択後、追加した項目の左側にある三角印 [▶] をクリックする。
  5. クリックすると三角印が下向 [▼] になり展開された状態となる
  6. その状態で、新たに [+] をクリックし新たに項目を追加する。
  7. 項目の追加内容から 2番目の設定項目 [Allow Arbitrary Loads in Web Content] を選択する。
  8. 同項目の右側のValueを [NO] → [YES] へ変更する。

これにより、UIWebViewクラスからのHTTP通信が許可されるようになる。

5
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
5
5