• ベストアンサー

Cookieについて

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

noname#21585
noname#21585

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

  • ベストアンサー
  • mi-si
  • ベストアンサー率35% (200/567)
回答No.1

Cookieはサーバー側で発行し、クライアントで保管します。(その場限りで消費される場合もある。)クライアントは該当するドメインもしくはURLにアクセスしたときにその情報をサーバーに送ります。 例外はJavaScriptでSetCookieを呼び出している時ですね。(この場合はクライアントでCookieが設定されます。) >そのウェブサーバはそのウェブサーバが発行したCookieしか取得できない ということですが、これは正しいですか? 必ずしも正しくないです。 www.*****.comと言うドメインで.*****.comに有効なcookieを発行すれば、xxx.*****.comでもcookieが送信されます。またCookieの仕組みから行けば、別のサイトで有効なCookieを発行する事も可能です(この辺はブラウザ側の扱いの問題ですが。) http://www.futomi.com/lecture/cookie/ Cookieの解説はここが詳しそうです。

noname#21585
質問者

お礼

なるほど。ありがとうございました。

関連するQ&A

  • cookieを設定

    Webブラウザが情報を保存する機能としてcookieがありますが、 JavaScriptでcookieを設定する方法と、 CGIがHTTPヘッダに「Set-Cookie」を含めてcookieを設定する方法が あるかと思います。 JavaScriptとCGIで設定する2つの方法のそれぞれのメリットは なんでしょうか? つまり、 JavaScriptを利用してcookieを設定する場合、Webサーバがcookieに 対応していなくても問題ないという利点はあることは分かりましたが、 他にはないのでしょうか? CGIでHTTPヘッダにcookieを保存しておいた場合、うれしいことは 何でしょうか?

  • LWPでのCookie取得

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

    • ベストアンサー
    • Perl
  • ブラウザ間でCookieを共有するには?

    現在、Cookieを使ってある情報をクライアント側に保持させる機能を作りたいと考えています。 そこで質問なのですが、例えば、IEでアクセスして"value=1"という情報を保持させました。 その後、Firofoxでアクセスした場合は、IEで保持された"value=1"という情報はなく、再度、振り直しで"value=2"という情報を保持させることになってしまいます。 これをブラウザ間で共有することはできるのでしょうか? ブラウザに依存することなく、一度振られた情報は不変のものとしたいので。 ブラウザのバージョンや種類、OSにもよるかとは思いますが、OSはWindowsXP、ブラウザはIE7、Firefox3.6で考えて頂いて構いません。 サーバー側はJavaで実装していますが、Cookieの設定・取得は現在はJavaScriptで実装しています。(とほほを参考に) JavaScriptでは無理だけど、Javaでならできるということであれば、サーバー側での実装に変えることもできます。 以上、ご回答よろしくお願いします。

  • Cookieの発行について

    現在、複数のCookieを利用したシステムを構築中ですが、 Cookie管理の1つとして、配列でCookieを発行しようと考えております。 ブラウザ別に保有できるCookie数が限られていますので、 可能なかぎり少ないCookieで管理したいと思います。 そこで質問です。 配列でCookieを発行した場合、ブラウザ側で認識されるのは1つになるのでしょうか? それとも配列の要素分だけCookieを発行した形になるのでしょうか? どなたかお分かりになれば、ご教示いただけますと助かります。 よろしくお願いいたします。   

    • ベストアンサー
    • PHP
  • $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
  • COOKIEの扱いについて

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

  • $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
  • 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 取得する方法

    Ruby の Cookie 情報取得について質問です。「取得できるサイトとできないサイトの違い」と、「取得する方法」をご教授ください。 現在、以下のコードで Cookie の情報を取得するプログラムを作っています。 require 'net/http' uri = URI.parse('http://www.google.co.jp') http = Net::HTTP.new(uri.host) http.start response = http.get '/' p response.get_fields('Set-Cookie') 上のコードのように "www.google.co.jp" などはちゃんと取得できるのですが、中には取得できないサイトもあります。 取得できない場合は、コマンドプロンプトに "nil" と表示されます。 例えば、 "http://auctions.yahoo.co.jp/" を Chrome ブラウザの EditCookie でみてみると、複数の Cookie を確認できます。 しかし上記のコードを試してみると、取得できません。 ・この原因は何なのか ・解決方法("auctions.yahoo.co.jp" からの取得方法を知りたいわけではなく、取得できないサイト一般についての解決策) この2点をご教授いただければ幸いです。

    • ベストアンサー
    • Ruby
  • ブラウザに保存されているcookieを利用したい

    ブラウザに保存されているcookieをjavascriptなどで取得することは可能でしょうか? この度ニコニコ動画のマイページを取得し、ほしい情報だけ抽出するwebアプリケーションを開発したのですが、ページ取得の際のログインをどのようにしようかと迷っています。正規のログイン画面でクッキーを取得した場合ブラウザに保存されているcookieが無効になってい、利便性にかけます。 そのため現在はブラウザに保存されているcookieを手動でソースに貼り付けて使っています(笑)。 ローカルサーバー内で使う分には結構満足しているのですが、どうせならどこからでも自由に使えるようにしたいのでソースにcookie情報が残らないようにしたいのです。 ちなみにブラウザは主にFirefoxを使っています。もしwebアプリケーションでは無理でもアドオンを開発して連携させればできるかも、なども詳しい方は合わせて教えてください。 どうかよろしくお願いします。