perl 

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の主要ブラウザ全てに通用する「戻る禁止」はどのようにしたらよいでしょうか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2006/09/11 18:55:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440

ポイント60pt

http://tech.bayashi.net/pdmemo/browsercache.html

やり方としては合っている様に見えますので、キャッシュはされていないのだと思いますが、有効期限切れのときにどのような挙動を示すのかは、ブラウザしだいだと思います。

確実にエラーにしたければ、JavaScript 等で禁止してしまうか、

CGI 側で、

・フォーム受付完了時に Cookie セット

・入力フォーム表示時に Cookie がセットされていればエラー画面を生成

等、工夫する必要があるのではないでしょうか。

蛇足ですが、Last-Modified ヘッダはこの場合つけないほうがいいように思います。

id:pipi_n

仕事で使うのでブラウザ次第という言い訳がきかなくて・・・

なるほど、cookieを使えばどのブラウザでも有効な手段ですね

しかしmacのIEはキャッシュ機能が強力なのでcookieでも行けるかどうか。

試してみます。

ありがとうございました。

------------------

追記

Cookieを使用してやってみましたがブラウザの戻るボタンではCookieを読みに行かないようで

windowsのIEでもダメでした・・・

ただ、戻って入力フォーム表示はしてしまうのですが、再度送信されたときにはCookieの有無チェックができるので、それで対応するのがいいようですね。

ありがとうございました

2006/09/05 11:13:01

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません