【Xcode/Swift】APIエラー:App Transport Securityの解決方法

エラー内容

APIを叩こうとしたら、以下のエラーが表示された。

Domain=NSURLErrorDomain Code=-1022 “The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.”

原因

原因は、https://ではなく、安全ではないhttp://を使っているからです。基本的には、sがついていないものはブロックするようです。

そもそもhttps://http://は何が違うのかというと、通信が暗号化されているかいないかの違いがあります。https://が暗号化されている方です。暗号化されていないと、安全性が低下してしまいます。ちなみに、GoogleChromeは2020年2月にhttp://をブロックするようになりました。

Xcodeでは、ATS(App Transport Security)という機能が有効になっていてブロックしているようです。

解決方法

解決方法は、以下の2つあります。

  1. ATSを無効にする方法
  2. 特定のドメインを指定して、HTTP通信を許可する

今回は、とりあえず、エラーを解決したいので、簡単な1の方法を紹介していきたいと思います。

1. ATSを無効にする方法

Info.plistに以下のように、設定します。

①プロジェクトを選択
②TARGETSを選択
③Infoを選択
App Transport Security Settingsを追加。
その下にAllow Arbitrary Loadsを追加し、ValueをYESに変える

これで、ATSを無効にすることができました。