- 締切済み
期限内の場合はクッキーを上書きしないようにする方法
a-site.comとb-site.comとc-site.comの全ページに下のようなJavascriptを埋め込んでクッキーを残そうとしています。 <script type="text/javascript"> <!-- var name = "iriguchi"; // クッキーの名前 var value = "a-site"; // クッキーの値 (サイトごとに変える) var period = 30; // 有効期限(分) // 有効期限の作成 var nowtime = new Date().getTime(); var clear_time = new Date(nowtime + (60 * 1000 * period)); var expires = clear_time.toGMTString(); // クッキーの発行(書き込み) document.cookie = name + "=" + escape(value) + "; expires=" + expires; // --> </script> この場合、a-site.comにアクセスした人がb-site.comにアクセスした場合、a-site.comで書き込まれたクッキーが期限内であっても期限切れでも、b-site.comにアクセスした時点でクッキーの中身は「b-site」に書き換えられ、期限も更新されてしまいます。 これを、クッキーの期限内であればどのサイトを回ろうと最初に書き込まれたクッキーの内容が保持され、期限が切れた時点で新たな内容に書き換えられるようにしたいのですが、それには上のソースに何か書き加える必要がありますよね? 書き方がわからないので文法のむちゃくちゃな自己流で書きますが if (a-site.comで書かれたcookieが期限内){クッキーは前のまま継続} else if (a-site.comで書かれたcookieが期限切れ){新期限 =expires、iriguchi = b-site} といったようにしたいのですが、現在のJavascriptのどこにどういう文を書き加えたらいいでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Bonjin
- ベストアンサー率43% (418/971)
質問を読む限りCookieの仕組みをちゃんと理解していないようです。 a-site.comで発行されたCookieはb-site.comに送られませんし、b-site.comで発行されたCookieがa-site.comで発行されたCookieを上書きすることはありません。 質問の様なことをやりたい場合は、a-site.comとb-site.comを同じドメインの配下に持ってくる必要があります。 例) a-site.hoge.com, b-site.hoge.com のような感じ。
- k0021
- ベストアンサー率26% (32/120)
onLoad イベントで処理する 記述例 <BODY onload="getInfo();"> function getInfo(){
お礼
その節はどうもありがとうございました。
お礼
ご回答ありがとうございます。 そうなんですよね。ドメインが違うと同一のクッキーで扱えないのはちょっと考えればわかる事でした。 ローカルで実験していたので上書きされただけのことでした。 そこで、各ドメインの各ページに、…まあ、対応ブラウザが限られるのは仕方がないかと妥協した上で<iframe>でクッキーを書き込むために用意したhttp://www.d-site.com/cookie.htmlを配置することにしました。 こうしないとd-site.comのCGIでクッキーを読めないので。 これなら大丈夫ですよね? …いや、上書きされてしまう事の解決にはなりませんが。 こうした上で、例えばb-site.comのいずれかのページにアクセスした時に既にどこかのサイトでd-site.comに書き込まれた「iriguchi」というクッキーが存在した場合はその内容を書き換えないようにするにはどうしたら良いのでしょう? if (a-site.comで書かれたiriguchiという名前の期限内のcookieが存在しない){document.cookie = name + "=" + escape(value) + "; expires=" + expires;}とすればいいのかなと思うのですが、その「if (a-site.comで書かれたiriguchiという名前の期限内のcookieが存在しない)」の部分をどう書いたら良いかわからないのです。 ご指摘、どうもありがとうございました。