まず、私は普段SQL Serverなどばかり触っているため質問の内容が意味不明となっている場合があります。その場合ご指摘頂けますと幸いです。
前提
私が開発に携わっている業務支援WEBサービスはオンプレミスのサービスです。
利用ユーザーは500以上であり各ユーザー毎にサーバーを用意してサイトを立てています。
(以降、上記のWEBサービスをオンプレサイトと記載します)
教えていただきたいこと
現在のやり方では、
外部サイトとのデータの受け渡しで「アクセスが拒否されました」となってしまいます。
それをどうにか解消できないかと思いアドバイスを頂きたいです。
経緯
オンプレサイトに以下の機能を追加する対応を行うことになりました。
「GoogleのMaps JavaScript APIを利用してGoogleMapを表示、任意の地点の緯度経度を取得」
単にオンプレサイトから上記のAPIを利用してマップを表示させるということなら可能だったのですが、
・APIのバージョンが上がったり仕様が変わった場合に全てのオンプレサイトを修正しないといけない
・リファラ制限があるため毎回Googleコンソールにて追加登録をしないといけない
・オンプレサイトはユーザー管理のサーバにあるためgoogleApiへの接続許可申請や設定に時間がかかる
という点からオンプレサイトとGoogleAPIの間に弊社の別サイト(クラウド)を噛ませようと考えました。
(弊社の別サイト(以降、クラウドサイト)には既にオンプレサイトからの接続実績があるため)
想定した処理フローは以下の通りです。
①オンプレサイト :iframe内に弊社の別サイトを表示
②クラウドサイト :GoogleのMaps JavaScript APIを利用してGoogleMapを表示
③クラウドサイト :GoogleMapの機能で緯度経度を取得
④クラウドサイト :取得した緯度経度をオンプレサイト側の要素に入れる
しかしながら④のフローがうまくいきませんでした。
「アクセスが拒否されました」と表示されて要素を参照できません。
調べてみたところ「ドメインが違う」「httpsとhttpのサイト」などではアクセスが行えないということが分かりました。
今回の対応ではオンプレサイトはユーザー毎のドメインであるためドメイン名を統一することは不可能であるように思い、断念しております。
補足
別サイトとのデータのやり取りが行えないのであれば、
「GoogleのMaps JavaScript API」を呼び出すJSのみをクラウドサイトに置き、
オンプレサイトからクラウドサイトのJSを呼びだすことで、クラウドサイトがGoogleのAPIに通信する事ができないかと期待もしたのですが、
そもそもクライアントサイドのため結局はブラウザ(オンプレサイト)からの通信になってしまうようでした。
まとめ
上記のように、
GoogleAPIへ通信するのは弊社のクラウド環境で、
最終的に取得した緯度経度情報をオンプレ環境に渡す
ということを実現するためにはどういった手法を取るべきか、
また、可能と思われるか等アドバイスを頂けますと幸いです。
恐れ入りますがよろしくお願いいたします。