Contents
エラー内容
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つあります。
- ATSを無効にする方法
- 特定のドメインを指定して、HTTP通信を許可する
今回は、とりあえず、エラーを解決したいので、簡単な1の方法を紹介していきたいと思います。
1. ATSを無効にする方法
Info.plistに以下のように、設定します。

①プロジェクトを選択
②TARGETSを選択
③Infoを選択
④App Transport Security Settingsを追加。
⑤その下に、Allow Arbitrary Loadsを追加し、ValueをYESに変える
これで、ATSを無効にすることができました。

