1つでも欠けていると容赦なくエラーで正しくデータ取得ができず数時間ハマってしまうのでメモ。
モデルケース
- サービスURL
-
https://sample-service.com
(本番) -
http://localhost:9000
(開発)
-
- API URL
-
https://special-api.com
(本番) -
http://localhost:3000
(開発)
-
アクセス経路
-
https://sample-service.com
の画面からhttps://special-api.com/api/users
を呼び出す -
http://localhost:9000
の画面からhttp://localhost:3000/api/users
を呼び出す
URL送信元(サービス)
開発中
- レスポンスヘッダーを書き換えている設定があれば取り除く(サーバー側で設定しているレスポンスヘッダーが正しく受信できず、接続エラー扱いになる)
- 基本的にサーバー側で設定するので、サービス側であれこれやらなくていい(余計なことはしない)
本番対応
- サービスがSSLで暗号化されている場合、外部APIで呼び出すURLが「http」だとやはりエラーになってしまう。
- SSLで暗号化されているサービスの場合、外部API呼出時のベースURLも「https://〜」に設定する必要がある。
URL送信先(サーバー)
開発中
- Railsの場合、rack-corsを使うのが一番手軽。
- Railsとvue.jsなどのJSフレームワークで、クロスドメイン通信(CORS)の設定をしたい!
- これを設定した上で、サービス側で受信したレスポンスヘッダーにクロスオリジン許可設定が入っていない場合、サービス側の設定を疑う。
本番対応
- SSLで暗号化されてるサービスから呼び出したい場合、こちらもSSL対応して「https〜」のURLで正しく呼び出せるように整えておく必要がある。