$ENV{'HTTP_COOKIE'}について

このQ&Aのポイント
  • Windowsサーバーのcgiにて$ENV{'HTTP_COOKIE'}でcookieの値が正常に取得できるが、Linuxサーバーでは取得できない
  • SSLを使用しているページでの動作確認
  • サーバーの環境はWindowsサーバー(Windows 2003 R2 SP2、Perl ver: 5.8.7)とLinuxサーバー(Red Hat Enterprise Linux 4、Perl ver: 5.8.8)
回答を見る
  • ベストアンサー

$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
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • petita
  • ベストアンサー率53% (8/15)
回答No.1

「http」 でセットしたものを 「https」 でゲットしょうとしている ということはありませんか。

mojabass
質問者

お礼

ご回答ありがとうございます。 >「http」 でセットしたものを >「https」 でゲットしょうとしている ということはありませんか。 (1)画面A(http)から「カート入れる」ボタンをクリックし、画面B(https)に遷移 (2)画面Bに遷移した際にcookieに取得、保存 要するにhttpsでセットしたものをhttpsゲットしようとしています。 以上、宜しくお願いいたします。

その他の回答 (1)

  • petita
  • ベストアンサー率53% (8/15)
回答No.2

> (1)画面A(http)から「カート入れる」ボタンをクリックし、画面B(https)に遷移 画面B を print するところで set-cookie ヘッダを出力するなら http でセットすることになりませんか。 一度 http でならゲットできるかテストしてみたらどうでしょう。

mojabass
質問者

お礼

ご回答ありがとうございます。 httpでゲットできるかテストしてみます。

関連するQ&A

  • $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
  • 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しか取得できない ということですが、これは正しいですか? また正しいとしたら、 それはブラウザ側が制御するのでしょうか? とぼけた質問かもしれませんが、どなたかぜひご教授ください。 また参考になるサイトがありましたら教えてください。

  • 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取得

    $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
  • COOKIEの扱いについて

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

  • $_ENV[OS]のキーはどうやって知るでしょうか。

    preg_match("/Windows/",$_ENV[OS])の$_ENV[ ]のキーであるOSはどこから来ているでしょうか。$_ENVはグローバル変数のため、[ ]の入っているキーも予め決まっていると思いますが、その解説してくれるサイトが見つかりません。 特に$_ENV[OS]のOSはどのOSに対応しているでしょうか。そのキーの中身(値)を知りたいですが、それも解説してくれるサイトが見つかりません。 また、グローバル変数のキーを解説してくれるサイトや本をご存知でしたら紹介していただけませんでしょうか。 さらに閲覧者はPCかケータイのどちらからアクセスしているのを判断するにも、preg_match("ケータイ",グローバル変数[使用機器])といったコードを使っていると思いますが、そういう解釈は正しいでしょうか。

    • ベストアンサー
    • PHP
  • Cookieを使って・・?

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

  • Perlのサンプルを見ていると

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

    • ベストアンサー
    • Perl