以前に投稿したのですが回答が得られなかったので削除して再質問です。
Gecko エンジンで Location ヘッダを送信してリダイレクトした後の
ページで更新(ページリロード)すると反応がおかしいようです。
例えば a というページから b というページにリダイレクトをして
b で更新をかけるとページの URL は a であると判断されてしまうよう
です。
# 検証用 CGI (index.cgi)
use strict;
&main();
sub main {
my $cgi = &getreq();
my $min = (localtime())[1];
# キャッシュしない
print "Pragma: no-cache\n";
print "Cache-Control: no-cache\n";
if($cgi->{'min'} eq '') {
# $cgi->{'min'} が空なら
# (Gecko では更新した時にもこっちにくる)
print "Location: ./?min=$min\n\n";
exit;
} elsif($cgi->{'min'} ne $min) {
# 分が異なる場合 (Gecko はこない)
print "Content-type: text/plain\n\n";
print "\$cgi->{'min'}=$cgi->{'min'}\n";
exit;
}
# $cgi->{'min'} と $min が同じ
print "Content-type: text/plain\n\n";
print "min=$min\n";
exit;
}
sub getreq {
my $cgi = {};
my $query = '';
$query = $ENV{'QUERY_STRING'};
my @args = split(/&/, $query);
foreach my $i (@args) {
my ($name, $val) = split(/=/, $i);
$val =~ tr/+/ /;
$val =~ s/%([0-9a-f]{2})/pack('C', hex($1))/eig;
$name =~ tr/+/ /;
$name =~ s/%([0-9a-f]{2})/pack('C', hex($1))/eig;
$cgi->{$name} = $val;
}
delete($cgi->{''});
return $cgi;
}
CGI::Session でセッション管理をしようとしたところ、IE(Trident)と
Opera(Presto)では正常なのですがFirefoxでうまく動作しなかったので
よく調べてみたところこのような状態です。
どうにかならないでしょうか。
因みに、後で調べてみるとSafari(WebKit) for Winでも正常でした。
現象が発生するのはGeckoのみです。
(Fxの他、SeaMonkeyでも同様の現象を確認しています)
No.1ベストアンサー
- 回答日時:
ホンットに自信ないですが、
そのページ(CGI)の呼び出しをPOSTで行っているなら、GETに変更するか、
HTTPステータス:303(See Other)でジャンプさせてみてはどうでしょうか??
HTTPステータスについて
http://www.onflow.jp/cyano/archives/161
303を吐き出す例
print "Status: 303 See Other\n"; # 追加
print "Location: ./?min=$min\n\n";
お返事ありがとうございます。
なんか上記のコードではそもそも現象が発生しなかったようです。
(以前確認したときは発生したはずなんだけどな...と)
なので、一旦質問を締め切って再度別のサンプルを提示することに
します。
実際に現象が発生している方でやってみた限りではうまくいっていない
みたい(?)です。
ただ、ちょっとヘッダの出力の書き方間違えていた可能性が。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Perl perlの構文でカンマの意味が分からない 2 2022/10/30 01:53
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- CGI CGIが読み書きするデータファイルのパーミッションはさくらのインターネットでは何にするべき? 1 2023/05/02 16:44
- CGI (フリーの)ツリー掲示版CGI、昔は多用させてもらいましたが・・今セキュリティ上どうでしょう? 2 2023/06/25 07:18
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- CGI 「CGIにより定義されていない」とは・・・ ? 3 2023/01/01 12:00
- 英語 ビジネス英語です。 添削お願いします。 Dear, ◯◯ Thank you very much. 3 2023/03/01 04:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Aopen Aeolus 6600GT-DVH128 AG...
-
CGIの設置が分かりません・・・
-
EXCELファイルに誰がアクセスし...
-
SFTPなどは使わないホームペー...
-
CGIって何ですか?簡潔に教えて...
-
URLに~/cgi-bin/~を隠す方法
-
htmlにアクセスと同時に、あるC...
-
cgiファイルを直接は見れなくす...
-
インクルードファイルのエラー
-
ローカルマシンでCGIソースが出...
-
ApacheでのCGIについての質問
-
《エクセルVBA》「他の人が該当...
-
特定URLから
-
ファイルダウンロード後に、デ...
-
CGIの外部呼出しについて
-
cgi アクセス制限 エラー
-
VBScriptで、ファイルから任意...
-
通貨表示で3桁毎にカンマ(?)を...
-
サイト内のファイルの更新日を...
-
掲示板のスレッドが消えた!?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
perl 矢印演算子 -> の使い方
-
カタカナを英語やフランス語に...
-
KENT WEB(昨日の続きです)
-
CGIの設置が分かりません・・・
-
NANAの革ジャン!!!
-
cgiからcgiを呼び出す方法
-
apacheのScriptAliasの記述につ...
-
カリビアンビーチへの行き方
-
歌詞画ってどうやって作るの?
-
iframeの中から、親frameのURL...
-
インテル製インタフェース82...
-
カレンダー(スケジュール)を...
-
十把ひとからげ
-
Aopen Aeolus 6600GT-DVH128 AG...
-
水天宮前・人形町周辺深夜まで...
-
EXCELファイルに誰がアクセスし...
-
《エクセルVBA》「他の人が該当...
-
SFTPなどは使わないホームペー...
-
VBAでサーバーにアクセスするに...
-
URLに~/cgi-bin/~を隠す方法
おすすめ情報