« 新宿はshuffle | メイン | ミッフィーのお財布 »
2005年03月02日
IEの問題?
仕事で作っているサイトでJavaScriptのwindow.openがWindows版IEでは開けないという現象に合いました。
JavaScriptの記述は<a href="javascript:openWin('URL')">というような通常ではブロックされない記述方法なので、単純なポップアップウィンドウブロックのためではありません。またFirefoxやMozillaでは正常に表示されます。
IE6.0で開けない場合はウィンドウは開くものの、その中にファイルが読み込まれません。
同じような記述は他の場所でも使っており、開ける場所と開けない場所との違い(window.openで開く先は同じ)は、開けない場所では親ウィンドウがSSLサーバーであることです。
最初、子ウィンドウが他ドメインだとダメなのかな?と思って、以下のように試してみたら、ここではちゃんと開けるようです。
子ウィンドウで開く(同ドメイン)
子ウィンドウで開く(他ドメイン)
結果、この現象は、
IE6.0ではSSLサーバーからJavaScriptのwindow.openで他ドメインを読み込むことができない。
ということのようです。SSLサーバーはワタクシは1箇所しか使える場所がないので、他のSSLサーバーではどうなのかは試していません。ひょっとするとサーバー固有の問題もあるのかもしれません。
回避策として、phpでmetaタグにrefreshを入れてリダイレクトすることにしました。
//---サンプルここから
<?php
if($_GET['URL']){
$MSG = "自動的に転送されない場合は<a href=\"${URL}\">こちら</a>をクリックしてください。";
$RED = "<meta http-equiv=\"refresh\" content=\"0;url=${URL}\">\n";
}else{
$MSG = "URLが存在しません。";
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<title>URL転送</title>
<?=$RED?>
</head>
<body>
<?=$MSG?>
</body>
</html>
//---サンプルここまで
上記スクリプト(redirect.php)はそのまま「redirect.php?URL=http://hogehoge」というように使えますが、スクリプトのようにURLをフルパスで渡してしまうと悪意の第三者に不正中継されてしまうおそれがあり、非常に危険です。
実際の運用ではドメインを限定したりする必要があります。ワタクシが使っている場所では飛び先もphpなので飛び先の引数のみを渡しています。
投稿者 Utayume : 2005年03月02日 20:58| 05 Work(Perl, PHP, etc)
AD
トラックバック
このエントリーのトラックバックURL:
http://ondes-martenot.info/MT/mt-tb.cgi/359