$ENV{'HTTP_COOKIE'}について

このQ&Aのポイント
  • $ENV{'HTTP_COOKIE'}の値がwindowsサーバーのcgiで正常に取得できたが、linuxサーバーでは取得できなくなった。SSLを使用しているページで、httpからhttpsに遷移する際、cookieを取得して保存している。サーバーの環境はWindows 2003 R2 SP2とRed Hat Enterprise Linux 4で、Perlのバージョンはそれぞれ5.8.7と5.8.8。
  • ロジックは変更していないため、おそらくサーバーの設定が原因と思われる。しかし、どこに手を付ければよいかわからないため、助言が欲しい。
  • 質問文章を要約すると、$ENV{'HTTP_COOKIE'}の値がlinuxサーバーで取得できなくなった。SSLを使用しているページで、httpからhttpsに遷移する際にcookieを取得して保存している。サーバーの環境はWindows 2003 R2 SP2とRed Hat Enterprise Linux 4で、Perlのバージョンはそれぞれ5.8.7と5.8.8。サーバーの設定が原因と思われるが、手を付けるべき箇所がわからないため、助言が欲しい。
回答を見る
  • ベストアンサー

$ENV{'HTTP_COOKIE'}について

windowsサーバーのcgi(※)にて「$ENV{'HTTP_COOKIE'}」でcookieの値が正常に取得できてましたが、 linuxサーバーにそのソースをそのまま移行し、動作確認したところ「$ENV{'HTTP_COOKIE'}」でcookieの値が取得できなくなってしましました。 (※)・・・ショッピングカートの処理 ちなみにSSLを使用しているページです。 (1)画面A(http)から「カート入れる」ボタンをクリックし、画面B(https)に遷移 (2)画面Bに遷移した際にcookieに取得、保存 要するにhttpsでセットしたものをhttpsゲットしようとしています。 サーバーの環境は以下となります ■windowsサーバー ・OS : Windows 2003 R2 SP2 ・Perl ver : 5.8.7 ■linuxサーバー ・OS : Red Hat Enterprise Linux 4 ・Perl ver : 5.8.8 ・パーミッション : 757 ロジックは変更していないのでおそらくサーバーのどこかの設定を変更しなければならないのではないかと思われますが、どこに手を付けてよいのかがわかりませんので ご教授していただきたいです。 宜しくお願い致します。

  • Perl
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • tomaju
  • ベストアンサー率76% (84/110)
回答No.1

サーバー、Webサイトは並行稼動しているのでしょうか。 cookie をセットするときに、ドメインを指定しているが、 移行先のサーバーにアクセスする際のURLのドメインと 異なる、なんてことはないでしょうか。。。

tanictanic
質問者

お礼

ご回答ありがとうございます。 >cookie をセットするときに、ドメインを指定しているが、 >移行先のサーバーにアクセスする際のURLのドメインと >異なる、なんてことはないでしょうか。。。 まさにそのとおりでした。ドメインを修正した結果、うまくいきました! サーバーの仕様上、SSLのページはドメイン名が微妙に違っていました。 本当に助かりました。 ありがとうございます!

関連するQ&A

  • $ENV{'HTTP_COOKIE'}について

    windowsサーバーのcgi(※)にて「$ENV{'HTTP_COOKIE'}」でcookieの値が正常に取得できてましたが、 linuxサーバーにそのソースをそのまま移行し、動作確認したところ「$ENV{'HTTP_COOKIE'}」でcookieの値が取得できなくなってしましました。 (※)・・・ショッピングカートの処理 ちなみにSSLを使用しているページです。 サーバーの環境は以下となります ■windowsサーバー ・OS : Windows 2003 R2 SP2 ・Perl ver : 5.8.7 ■linuxサーバー ・OS : Red Hat Enterprise Linux 4 ・Perl ver : 5.8.8 ・パーミッション : 757 ロジックは変更していないのでおそらくサーバーのどこかの設定を変更しなければならないのではないかと思われますが、どこに手を付けてよいのかがわかりませんので ご教授していただきたいです。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • HTTPヘッダの取得方法

    PerlにてHTTPヘッダの情報を取得したいと考えています。 通常ならば、 $ENV{'<ヘッダ名称>'} で取得できるはずなのですが、 今回取得しようとしているヘッダはHTTPの標準ヘッダではありません。 proxyサーバにてログインを行い認証されますと、 そのproxyサーバが独自にHTTPヘッダに値を追加する仕様になっています。 テストではJavaですとproxyが設定したヘッダ情報を取得できるのですが、 ことPerlになると取得することができません。 ※Javaと今回動かすPerlは同一サーバで動かします。 HTTP標準以外のヘッダ情報はどのように取得すれば良いのでしょうか? なお、PerlのVerは5.6.1、OSはLinuxです。

  • Cookieについて

    HTTPプロトコルで使われるCookieという機能について教えてください。 あるウェブサーバからあるブラウザのCookieを取得しようとするとき、 そのウェブサーバはそのウェブサーバが発行したCookieしか取得できない ということですが、これは正しいですか? また正しいとしたら、 それはブラウザ側が制御するのでしょうか? とぼけた質問かもしれませんが、どなたかぜひご教授ください。 また参考になるサイトがありましたら教えてください。

  • 指定ディレクトリからcookie取得

    $cook = $ENV{'HTTP_COOKIE'}; foreach ( split(/;/, $cook) ) { ($key, $val) = split(/=/); $key =~ s/\s//g; $cook{$key} = $val; } $cook{'name'} ./index.cgiで、上記のように$ENV{'HTTP_COOKIE'}でクッキーを取得しています。 このままでは./に保存されたクッキーが取得されてしまいますが、これを、任意のディレクトリ(./../html/等)に保存された場所から取得したいと考えていますが、可能でしょうか。 CGIが設置されているディレクトリ = 'http://hogehoge/cgi-bin/'; COOKIEを読み込むディレクトリ = 'http://hogehoge/html/';

    • ベストアンサー
    • Perl
  • LWPでのCookie取得

    LWPでHTTPのクライアントを作成しています。 サーバ側で発行されたSet-Cookieヘッダを取得する方法ですが、 HTTP::Cookieでファイルに取得するのではなく、できれば変数に直接入れたい(ディスクI/Oを発生させたくない)のですが、 そのような手法はあるのでしょうか? また、Cookieの再利用方法を教えて下さい。 たとえば、一度クライアントを一度起動し、セッションCookieを取得して、 そのCookieをまた別のクライアントに引数などで渡し、その値を利用してアクセスする、 といったようなことです。 毎度毎度ログインをしないで、Cookieだけ使いまわせれば、と思っております。 上記は全部SSL通信上での話です。 (Net::Ssleyを使用してSocketを作成してみたのですが、なぜか失敗してしまう・・・)

    • ベストアンサー
    • Perl
  • apacheでcookieを扱いたい

    サーバーをapacheにしたらcookieがうまく動かなくなった。 以前、04WebServerを利用していた時のコード ・cookieの発行 print ("\r\n\r\n") print '<script language="javascript">' print 'document.cookie = "testcookie=1; path=/python"' print '</script>' ・cookieの削除 print ("\r\n\r\n") print '<script language="javascript">' print 'document.cookie = "testcookie=None; path=/python;" ' print '</script>' ・cookieの確認 if os.environ.has_key('HTTP_COOKIE'): cookie = Cookie.SimpleCookie() cookie.load(os.environ["HTTP_COOKIE"]) cookieValue = cookie["testcookie"].value 上記のようにcookie処理を行っており、 cookieを print すると Set-Cookie: testcookie=1 cookie["testcookie"].value から 1 が取得できました。 しかし、サーバーをApaheに変更したところ cookieを print すると Set-Cookie: Apache=4dcf77a5.50d1204a49e25 となってしまい、発行したはずのtestcookieは存在していません。 cookie["Apache"].value で取得できる値も 4dcf77a5.50d1204a49e25 とよくわからないものになっています。 何が問題なのか教えてください。

  • COOKIEの扱いについて

    いつもお世話になっています。 現在のプロジェクトでCOOKIEの値を利用する機能があって つまずいてます(ToT) やりたい事は 1:特定ページアクセスにアクセスされたらCookieをセット 2:別のページ内に<script src="Cookieセットしたサーバー"></script> を埋め込んでCookieをセットしたサーバーでCookieの値を取得. FIREFOXですと2の段階でもCookieの値を取得できるのですが IEですとCookieが取得できません。 ブラウザの仕様or設定の問題かとおもいますが困っているので よろしくお願いしますm(__)m

  • Cookieを使って・・?

    たぶんCookieを使うのかなと思いますが、 以下のようなことはできますか? よろしければ教えてください。 自前のWEBサーバ上でホームページを開設します。 そして、そのホームページにアクセスしてくる人を 自動的に判別して、アクセスを許可・不許可する ことはできますか? cgi(perl)のプログラムをサーバ上に置いておいたり してできるのでしょうか? もしできなければ、アクセスしてくる人の情報って Cookieを使って(?)どこまで取得できるのでしょうか? 妙なことを言っていたらすみません。 よろしくお願い致します。

  • windowsからlinuxへ移行(perl)

    現在、windowsサーバーからlinuxサーバーへの移行準備をしております。 自社の方でショッピングサイトを経営しておりまして カートの部分はcgi(perl)で以下のような現象が起きています。 ■windowsでの正常な動き (1)購入ページから商品をカートに入れる(カートのページに遷移) (2)カートに入ったことを確認して買い物を続ける(購入ページへ戻る) (3)商品をカートに入れる(カートのページに遷移) (4)カートには2商品が入っている ■linuxでの動き (1)windowsと同様 (2)windowsと同様 (3)windowsと同様 (4)カートに1商品が入っている(前の商品の情報が消えている) windowsサーバーからlinuxサーバー移行時にで変更したのは以下の3点だけとなります。 (1)プログラムパス (2)DB接続情報 (3)パーミッションを755 動きだけをみるとセッション関連のところで何かやらなければいけない感じがしますが、 どこに手を付けてよいのかがわかりません。。。 プログラム修正が必要か? 必要なモジュールが足りないのか?(具体的なモジュール) その他、目を付けるところはあるのか? 大変申し訳ありませんが、 ご教授の方、宜しくお願い致します。

    • ベストアンサー
    • Perl
  • Perlのサンプルを見ていると

    ・・・・・・・・ #// クッキー取得 if ($ENV{'HTTP_COOKIE'}) { *data = GetCookie($ENV{'HTTP_COOKIE'}); @w = split(/\,/, $data{$cknm}); $test = @w[0]; } ・・・・・・・ というのがあったのですが @w[0] と書くのは正しいのでしょうか?

    • ベストアンサー
    • Perl