プログラミング
IE

IEは自画面へのPOSTでダウンロード処理させると履歴が消える

More than 1 year has passed since last update.


履歴が消える!

IEにおいて、表示中のURLと同じURLへのpostでダウンロード処理をさせると、その画面の履歴が無くなります!

(ブラウザの戻るボタンで戻った時に、さっき見ていたはずのページが表示されません)


どういうこと?

ページ1→ページ2→ページ3とページ移動させるようなリンクが貼ってあるとしましょう。ページ2にはダウンロードボタンがあります。ダウンロード処理はページ2と同じURLで行います。

ページ1からページ2へ移動し、そこでダウンロードボタンを押してファイルをダウンロードしてから、ページ3へ移動します。

ブラウザの戻るボタンを押すと、ページ2に戻るはずがいきなりページ1に戻ってしまいます。


解決方法

ダウンロード処理を表示中のURLと違うURLにしましょう。末尾に「?」を付けるだけでもOK。

以下はColdFusionの例ですが、post先がaction="dltest2.cfm"と自分のURLになっている箇所をaction="dltest2.cfm?download"などダミーのパラメータを付加してやります。

本当はダウンロード処理を別モジュールにするべきなんでしょうけど、既に作ってしまって修正が面倒なときは参考にしてください。


dltest2.cfm

<CFIF isDefined("form.btnSubmit")>

<CFHEADER name="Content-Disposition" value="attachment; filename=testfile.txt">
<CFCONTENT type="text/comma-separated-values" file="e:\testfile.txt" deleteFile="no">
</CFIF>

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>2番目のページ</title>
</head>
<body>
<h3>2番目のページ</h3>
<a href="dltest1.cfm">前へ</a> <a href="dltest3.cfm">次へ</a>
<form method="post" action="dltest2.cfm">
<input type="submit" name="btnSubmit" value="download">
</form>
</body>
</html>