Internet Explorer の情報バー

  • IE + Windows XP SP2でダウンロードブロックの情報バーが表示されますが、抑止できないのでしょうか。


ファイルダウンロード時にメッセージを表示したい

  • ある社内用のWebシステムで、サイトからファイルをダウンロードさせる機能が必要でした。ブラウザはIE専用。
  • 操作感の都合上、ボタンをクリック→確認メッセージ表示→ファイルをダウンロードという流れにしたいとのこと。
    • 2回リクエストしなくちゃならない…クラサバなら簡単なことですが…


実装する

  • まあ、以下の流れでいけるかなと思ったのですが。
    • ユーザがダウンロードボタンをクリック。
    • サーバから、「メッセージ表示+OKボタンが押されたら、javascriptで再度リクエスト」するレスポンスを返す。
    • 再度リクエストに対して、ファイルをダウンロードするリクエストを返す。


実行してみる

  • アドレスバーの下にニョキっと情報バーが表示されてしまいました。
    • セキュリティ保護のため、このサイトによる、このコンピュータへのファイルのダウンロードがInternet Explorer によりブロックされました。
  • 確認メッセージなしで、ボタンをクリック→ファイルをダウンロードする場合は、情報バーは表示されないのですが、javascriptで再度リクエストすると、IEのセキュリティチェックに引っかかるらしい。
    • 別のサイトに飛ばすこともできるから?
  • とにかくこれでは使いにくい。

対策

  • いろいろ検索したり、周りに相談してみたのですが、コーディングで阻止することはどうも無理なようです。
    • まあ、記述方法で回避できたらブロックの意味がないですよね。
  • 仕方ないので、IEの設定で回避することになりました。
    • インターネットオプション→セキュリティ→ローカルイントラネット→サイト→詳細 で、サイトをゾーンに追加。
      • 要は、セキュリティ設定のダウンロード→ファイルのダウンロード時に自動的にダイアログを表示=有効にする になっていればOK。


検証用ソース

 <?php
     if (isset($_POST['exec']) && $_POST['exec'] == '1') {
         header("Content-type: text/plain");
         header("Content-Disposition: attachment; filename=\"testfile.txt\"");
         echo "this is test file.\n";
         exit();
     }
 ?>
 <html>
 <HEAD>
 <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=UTF-8">
 <title>ファイルダウンロード</title>
 <script language="JavaScript">
     window.onload = function() {
         if (document.all.confirmform.confirm.value == '1') {
             alert("ダウンロードします");
             document.all.downloadform.submit();  // ダウンロードリクエストする
         }
     }
 </script>
 </HEAD>
 <body>
ファイルダウンロード
 <form action="<?php echo $_SERVER['PHP_SELF']?>" method="POST" name="confirmform">
 <input type="hidden" name="confirm" value="<?php echo $_POST['confirm'] ?>" />
 <input type="button" value="確認+ダウンロード" onclick="document.all.confirmform.confirm.value=1;document.all.confirmform.submit();" />
 </form>
 
 <form action="<?php echo $_SERVER['PHP_SELF']?>" method="POST" name="downloadform">
 <input type="hidden" name="exec" value="1" />
 <input type="button" value="ダウンロード" onclick="document.all.downloadform.submit();" />
 </form>
 
 <body>
 <html>

facebook slideshare rubygems github qiita