IE6でSSL通信の場合、xmlHttpRequestのonreadyStateChangeがうまく拾えない場合がある

投稿者:isc_blog

この現象は IE6(InternetExplorer6)でhttps://~ で発生します。
サイト上から下記Javascriptのような処理を行ったところ
非同期通信でデータを取得し取得が完了したら結果をサブウィンドウに表示する処理なのだが
一度目はデータを読み込みサブウィンドウを開いて表示したものの
2回目はサブウィンドウを開くそぶりもない・・・
JavaScriptにalert()を入れてみたところ
「きたよ!」が出ない・・・

どうやら通信に行っていないようだ
[javascript]
xmlHttpRequest.onreadyStateChange = function() {
// ↓ここにalert
alert(‘きたよ!’);
if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200) {
subwin = ("","subwin","width=400,height=370");
subwin.document.open();
subwin.document.write(xmlHttpRequest.responseText);
subwin.document.close();
}
}
[/javascript]
なにが悪いのかな・・・・と調べたところ
どうやらIE6でSSL通信の場合キャッシュを見てしまって通信すら行かないらしい・・・

上記ソースの場合、通信しないとサブウィンドウが開かないので
シレっと何事もないようになってしまうから厄介だ・・・

この場合、手っ取り早いのは
リクエスト送信時にタイムでも付けてしまうこと・・・
[javascript]
var time = (new Date()).getTime();
xmlHttpRequest.open("GET", "/service/AAAA?" + time);
[/javascript]
IE7やFireFoxでは再現しないみたい(IE8以降は試してません)

キーワード
onreadyStateChange キャッシュ ssl サブウィンドウ

2011年5月13日