クロスドメイン通信とIE

29 12月

Internet Explorer (以下 IE) でクロスドメインの通信をするときに、これまで Flash の通信機能を利用していました。IE の ver.10 以降は通信が可能になったと聞いていましたが、通信する Webサーバーが両方共 https であるか、http であるか、という条件があるとのことでした。大学の LMS サーバーが https で、研究室の採点サーバーが http だったので、そのままではクロスドメイン通信はできず、そのため IE であれば、通信機能を組み込んだ Flash を読み込むようにコードを書いていました。

今回、研究室のサーバーが https となったので、IE でも Flash の利用を止めて、jQuery で通信を書いてみました。

事前に xdr.js というプラグインを読み込んでおきます。ヘッダー部は下記。

<script src="jquery/jquery.js" type="text/javascript"></script>
<script src="jquery/jquery-ui.js" type="text/javascript"></script>
<script src="jquery/xdr.js" type="text/javascript"></script>

通信のところは下記。以前に書いていたもので(FireFox や iOS で動いていたコードで)変更無く通信できています。

$.ajax({
url:tmpurl,  // あるサイトと通信
type:'post',
data:{'param1':xmlText},  // 'param1' という名称の、適当なテキストデータ
timeout:30000,
success:getAfterFilter,  // 上手くいった場合の処理
error:function(XMLHttpRequest,status,ethrown){
alert(status);
}

});

Flash を利用しなくなったので、コンテンツのサイズが 300kB ほど減って、約半分になりました。