perlで作ったフォームで送信後、ブラウザの戻るで戻った場合エラー表示をさせたいのですが、どういった方法が良いでしょうか。
perlに
print "Content-type: text/html\n";
print "Pragma: no-cache\n";
print "Cache-Control: no-cache\n";
print "Expires: Thu, 01 Dec 1994 16:00:00 GMT\n";
print "Last-Modified: Thu, 01 Dec 1994 16:00:00 GMT\n";
htmlに
<META http-equiv="Pragma" content="no-cache">
<META http-equiv="Cache-Control" content="no-cache">
<META http-equiv="Expires" content="0">
と記述してもwindowsのIEは「ページの有効期限切れ」と出るのですが、それ以外のブラウザ(macも含め)は普通に戻れてしまいます。
windowsとmacの主要ブラウザ全てに通用する「戻る禁止」はどのようにしたらよいでしょうか?
http://tech.bayashi.net/pdmemo/browsercache.html
やり方としては合っている様に見えますので、キャッシュはされていないのだと思いますが、有効期限切れのときにどのような挙動を示すのかは、ブラウザしだいだと思います。
確実にエラーにしたければ、JavaScript 等で禁止してしまうか、
CGI 側で、
・フォーム受付完了時に Cookie セット
・入力フォーム表示時に Cookie がセットされていればエラー画面を生成
等、工夫する必要があるのではないでしょうか。
蛇足ですが、Last-Modified ヘッダはこの場合つけないほうがいいように思います。
仕事で使うのでブラウザ次第という言い訳がきかなくて・・・
なるほど、cookieを使えばどのブラウザでも有効な手段ですね
しかしmacのIEはキャッシュ機能が強力なのでcookieでも行けるかどうか。
試してみます。
ありがとうございました。
------------------
追記
Cookieを使用してやってみましたがブラウザの戻るボタンではCookieを読みに行かないようで
windowsのIEでもダメでした・・・
ただ、戻って入力フォーム表示はしてしまうのですが、再度送信されたときにはCookieの有無チェックができるので、それで対応するのがいいようですね。
ありがとうございました