クロスドメイン(インターネット、イントラネット)の通信

こんにちわ、イーサースのまっすです。

結構お久しぶりです。

イーサースでは新たな試みとして、クラウドのイーサースと社内ローカルのWebサーバを連携します。

現在は特定の企業様だけの特別機能となりますが、以下のような内容です。

販売情報はイーサースで管理。その販売情報に紐づく各種ファイル(ドキュメント、設計ファイルなど)は社内サーバで管理。

そしてHTTPリンクで双方を接続。

操作している側は、今どちらのサーバにアクセスしているか意識する必要はありません。

容量の大きいファイルでも社内LAN上なので快適にファイルにアクセスできます。

さてさて、技術情報です。

イーサースとローカルサーバはHTTP、またはHTTPSで接続されます。WEBの標準プロトコルです。

イーサースからローカルサーバは直接通信はしません。そのため、ローカルサーバ側でポート(80)を開ける必要はありません。

イーサースからローカルサーバはHTTPのリンクで画面を遷移させるだけです。たとえば、

http://localhost/index.html

というリンクをイーサースが貼ったとして、そのリンクを参照できるのはローカルの環境下に http://localhost/index.html を持っている人だけです。なので、社内からアクセスすれば見られるし、社外からアクセスすれば見れないということになります(社外=VPN外)。

さて、問題はローカルサーバからイーサースへの接続です。ローカルサーバからは何かしらの情報をイーサースへ送らないと連携できません。

しかし、ブラウザのセキュリティによりドメイン(e-saas.co.jpなど)が異なる間でのスクリプト(JavaScriptなど)ベースのデータ通信を禁止しています。

異なるドメイン間の通信をクロスドメイン通信というようですが、ブラウザベースでは結構セキュリティが固くなっています。ブラウザベースでの方法があるとすればそれはセキュリティホールの可能性が高く、たとえ実現できたとしても将来的にはロックされる可能性があります。そんなイタチごっこはしたくないので、ブラウザを使わず、独自の通信でイーサースとローカルサーバを接続することにしました(それは企業秘密です)。

イーサースとローカルサーバのデータ通信も行えるようになり、ほぼ問題はクリアしたかと思いましたが、ラスボスが待っていました。

【現象】
ブラウザ:Internet Explorer全般?(Firefoxでは発生せず)
1.http://hogehoge.co.jp/ から showModaldialog にて http://localhost/ を表示
2.モーダルダイアログでsubmit (POST、GET)すると新しいウィンドウが開く

一般的な解決方法では、モーダル画面側でwindow.name、Formのtargetで対応しますが、これをしてもダメでした。いろんなことを試してみましたが、有効な方法がありません。

【調査】
・http://hogehoge.co.jp/ から showModaldialog にて http://gehogeho.co.jp/ なら問題ない
・http://hogehoge.co.jp/ から showModaldialog にて http://hogehoge.co.jp/ を開き、転送で http://localhost/ はダメ(http://localhost/が別ウィンドウで開かれる)

【結果】
・アクセスゾーンが異なるとshowModaldialogが正常に動作しない
・インターネットゾーン同士の呼び出し、ローカルイントラネットゾーン同士の呼び出しはOK。
・インターネットゾーンからローカルイントラネットゾーンの呼び出しはダメ、その逆もダメ。
・インターネットゾーン、ローカルイントラネットゾーンの切り分けは○○○○○があるかないか。

ローカルサーバに○○○○○を付けて試したところ、なんと解決しました!!

そういえば、なんか昔に同じような対応をした気がします・・・・・・。

IEは進化しても、そういうところは変わってないんですね。

以上、最近のイーサース開発室でした。

タグ: , , , , , , ,