6

$.cookie は、サーバーの応答によって以前に設定された Cookie を読み取っていません。

$.cookie() で設定された Cookie を読み取ることができます。

Firefox の Web 開発者アドオンで設定されたすべてのドメイン Cookie を確認できます。
また、サーバー側はリクエスト Cookie を見ることができるため、ブラウザーには間違いなくそれらがあります。

私は無駄な有効期限を実験しました。

4

2 に答える 2

8

問題は、ここで説明されているように、サーバー側が HttpOnly 設定で Cookie を送信していることです: http://en.wikipedia.org/w/index.php?title=HTTP_cookie#HttpOnly_cookie

この方法で送信された Cookie は、document.cookie からはアクセスできません。これは通常、サイトで発生する可能性のある XSS 攻撃から Cookie の値を保護するために使用されます。

編集:サーバー側でCookieを設定するために使用しているテクノロジーについては言及していません。PHP を使用している場合は、このリンクに HttpOnly フラグを設定できる方法がリストされています。

https://www.owasp.org/index.php/HttpOnly#Using_PHP_to_set_HttpOnly

于 2012-05-28T01:17:14.503 に答える
1

更新: 元の回答は間違っていました (以下を参照)... パス ツリーのさらに下のページは上位レベルの Cookie を読み取ることができるため、パスが正確に一致する必要はありません。他の誰かが同じ間違いを犯した場合に備えて、元の回答を残します。私の問題は、JavaScript から Cookie を設定し、Cookie サーバー側を変更しようとしたことが原因でした。サーバーはパス「/」の Cookie をターゲットにしたため、パス「/mypages」の Cookie は変更されませんでした。

$.cookie は現在のドキュメント パスの下にある Cookie のみを読み取ることができるため、ページが >mysite.com/mypages/mypage.aspx の場合、サーバーは Cookie を設定するときにパスを "/" として設定しますが、$.cookie はパス "/mypages" から読み取ろうとすると、Cookie の読み取りに失敗します。私は自分自身でこの問題に遭遇しました。このような異なるパスがない場合、これはおそらくあなたの問題ではありません。

于 2012-07-20T19:12:49.180 に答える