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を無効にすることができました。