
cookieを書込んだ直後、書込めたか(cookieをオフにしていたり、cookieを書込めない携帯端末からのアクセスかもしれないので)確認をしようと、cookieを読込もうとしたのですが、cookieが書込まれているにもかかわらず情報を取得することができません
実験環境として、htmlファイルにボタンを作って、cgiへ飛び、そのcgi内でcookieを書込み、cookieが書込めたかどうかで分岐して、表示するようにしています
(cgiを一度実行したあと一旦ブラウザで前のhtmlファイルに戻って)cookieが既に書込まれた状態で、改めてhtmlファイルのボタンを押せばcookieは読込めますが、最初にcookieを書込んだ時に同じcgi内で即読込みを行ったら読込めません
書込が完結する前に読込みに行っているから読込めないのかとも思い、読込み前にタイムラグを作っても見ましたがやはり読込めません
どうすれば書込み直後に読み込めるのでしょうか?
色々ネットで調べても見ましたが、いっこうに解決策が見つかりません
ご存じの方ぜひご教授下さい
よろしくお願いします
なお、下にperlのコードを書いておきます
#クッキーを書込
$test{sid} = "12345";
&set_cookie($test{sid});
#タイムラグ
use Time::HiRes;
Time::HiRes::sleep(0.8);
#クッキーを読込
($cookie{test}) = &get_cookie;
if(!$cookie{test}){ print "読み込めてない"; }
else{ print "読み込めた"; }
######→読み込めません#####
#クッキー書込sub
sub set_cookie {
local(@cook) = @_;
local($gmt, $cook, @t, @m, @w);
@t = gmtime(time + 2*60*60);
@m = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
@w = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
$gmt = sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT", $w[$t[6]], $t[3], $m[$t[4]], $t[5]+1900, $t[2], $t[1], $t[0]);
foreach (@cook) { s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg; $cook .= "$_<>"; }
print "Set-Cookie: SID=$cook; expires=$gmt; path=/;\n";
}
#クッキー読込sub
sub get_cookie {
local($key, $val, *cook);
$cook = $ENV{'HTTP_COOKIE'};
foreach ( split(/;/, $cook) ) { ($key, $val) = split(/=/); $key =~ s/\s//g; $cook{$key} = $val; }
foreach ( split(/<>/, $cook{'SID'}) ) { s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg;
push(@cook,$_); }
return (@cook);
}
No.3ベストアンサー
- 回答日時:
cookieをprintしたあとにスリープして待ってるでしょ。
ブラウザはHTTPリクエストを投げるとき、以下のような文字列を投げる。ようするに、「開いた」ときにcookieを投げる
POST /xxxx.cgi HTTP/1.1
Cookie: hoge="fuga";
...
ダイナミックにセット/ゲットしたけりゃ、javascriptでcookie読み書きして、AjaxでCGIと通信するしかない。
ありがとうございます
> 「開いた」ときにcookieを投げる
ですか。
> AjaxでCGIと通信するしかない
ブラウザで完結する方法はないみたいですね。
このcgiではなく他のアプローチを探してみます
No.2
- 回答日時:
ていうか、cookieはページを「開いた」ときにブラウザが投げるものだし。
CGIでprintしたあと、いくらスリープしても、そりゃとれない>CGIでprintしたあと、いくらスリープしても
スリープはprint前ですが。
>cookieはページを「開いた」ときにブラウザが投げるもの
ということは、cgiでcookieを書込み、その後にブラウザをリロードやページ移動なしに一連のプログラムの中でcookieを取ろうとしてもできないということなのでしょうか?
もしそうであれば、cookieが書き込めたか同一のプログラム内でチェックする方法はないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP phpでcookieがうまく保存されない 2 2023/08/02 16:40
- その他(ソフトウェア) ロイロノート(アプリ版)のログインができません。 2 2022/09/04 21:07
- Google Drive Google Earth PRO が 次のメツセージが出て開けません 2 2022/10/08 18:46
- SSL・HTTPS 掲示板サイトへの書き込みができない件(ブラウザソフトを変えてもできない) 2 2022/11/20 10:48
- Chrome(クローム) google earth PROをクリックすると下記の表示がされPROが開きません 2 2022/07/28 10:25
- その他(コンピューター・テクノロジー) パソコンが重たいので、PC版エッジの全期間キャッシュ(閲覧履歴、DL履歴、Cookieと他サイトデー 2 2023/05/02 07:25
- PHP PHPで訪問回数を表示するカウンタを作成したい 3 2023/05/27 07:09
- Chrome(クローム) Cookieを削除 他サイトでの自動ログインなどの設定も削除されますか パソコン クロームです 1 2022/09/10 21:47
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- YouTube ChromeブラウザでYouTubeの表示がおかしくなる 1 2022/07/21 14:44
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perl 初等プログラミングについて
-
Windows版のPerlについて
-
Perlのエラーについてご教授く...
-
Windows10においての『Perl』の...
-
検索ボックスから製品名を検索...
-
Perl 特定のフォルダ以外削除
-
perlをバージョンアップしたら...
-
INDIRECT 横に再度抽出したい
-
openした後、closeしないでプロ...
-
PerlでUTF-8のファイルの文字列...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
ファイルアイコンの左下に緑の□...
-
Perlで時間の計算
-
Blenderについて
-
Perl の外部モジュールの利用方法
-
Perlで特定文字列から特定文字...
-
vlookupがうまくいきません、教...
-
arduino の割り込み処理について
-
perl の open について教えてく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
openした後、closeしないでプロ...
-
テキストファイルで提出とは?
-
Perlのエラーについてご教授く...
-
perlをバージョンアップしたら...
-
perlで2次元配列をサブルーチ...
-
INDIRECT 横に再度抽出したい
-
Wallpaper Engineでおすすめの...
-
bashスクリプト
-
Strawberry Perl for Windows ...
-
perlプログラミング 空白行削除
-
perlの構文でカンマの意味が分...
-
Perl の外部モジュールの利用方法
-
Perlで、「が」を、「...
-
Windows版のPerlについて
-
Perlで時間の計算
-
Perlでファイルの末尾から指定...
-
perl 初等プログラミングについて
-
VBA変数をFunction.VLookupの戻...
-
Perlで特定文字列から特定文字...
-
perl 正規表現でエラー
おすすめ情報