2012-03-23 11 views
1

私はクッキーを保存するJavaScriptコードをいくつか持っています。ただし、Cookieを保存した後、ユーザーが新しいタブを開くと、Cookieが保存されていないように見えます。新しいタブは同じドメインにあります。ここで クッキーを保存し、新しいタブでリンクを開く

が私のクッキーの設定/取得コードです:

function setCookie(c_name,value,exdays) 
{ 
    var exdate=new Date(); 
    exdate.setDate(exdate.getDate() + exdays); 
    var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); 
    document.cookie=c_name + "=" + c_value; 
} 

function getCookie(c_name) 
{ 
    var i,x,y,ARRcookies=document.cookie.split(";"); 
    for (i=0;i<ARRcookies.length;i++) { 
     x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); 
     y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); 
     x=x.replace(/^\s+|\s+$/g,""); 
     if (x==c_name) { 
      return unescape(y); 
     } 
    } 
} 

setCookie('mycookie', 1)を呼び出した後、ユーザーが_target_blankに設定されているリンクをクリックするjavascriptのいくつかの場合、クッキーは新しいタブにロードされません。したがってgetCookie('mycookie')1を返しません。

ここで問題は何ですか?

+0

は、これらの2ページが別のドメインにありますか? – kishu27

+0

うん、それを上に明らかにした。 – speedplane

+0

投稿の答えがわかりました:) – kishu27

答えて

1

を実装しようとする異なるドメイン/サブドメインに

ある特別な場合には、セキュリティ上の問題である可能性があります。

私は1つのサブディレクトリにクッキーを設定し、別のサブディレクトリでそれを読み取っていました。だから、私はwww.example.com/foo/の上にクッキーを設定していたのですが、新しいタブを0​​にロードし、そのクッキーはもう存在しませんでした。私は上記のsetCookie関数はこれを正しく処理しないと思います。私の解決策はmore robust cookie libraryです。

0

これは、2つのページが、このQuestion on SOを読んで、私は、私はそれを考え出したと思う

+0

また、詳細を理解したい場合は非常に読みやすい http://www.quirksmode.org/js/cookies.html – kishu27

関連する問題