0

dojo.cookie("foo") をセットアップすると、他のいくつかのページで呼び出されます。次に、fooClear.html という特定のページが読み込まれるたびに、「dojo.cookie("foo", null, {expire: -1})」で Cookie を削除するように設定しました。fooClear.html のみ dojo.cookie("list") が削除されていることに気付きました。他のページで dojo.cookie("foo") を呼び出すと、ブラウザーを閉じない限り古いデータが含まれたままになります。

これはキャッシュの問題だと思います。しかし、Dojo で Cookie を完全に削除するにはどうすればよいでしょうか。それはまったく可能ですか?

4

2 に答える 2

1

現在のページ (パス) のすべての Cookie を削除するには;

var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++) {
  name = cookies[i].split("=")[0];
  document.cookie = name + "=; expires=" + +new Date;
}

あなたの場合、パスを「/」に変更して、サンプル「/basket/list.html」、「/epay/submit/basket.html」など、ページのどこでも Cookie が公開されるようにすることをお勧めします。

以前の Cookie 割り当てで発生したのは、Cookie の設定中にパス プロパティを省略したことです。これにより、document.cookie の下にある上記の Cookie が、設定された場所から document.location を「継承」します。例えば、'/admin/save.html' の下でdojo.cookieセットとして呼び出すと、デフォルトで dojo.cookie("foo", "value", {path:'/admin/'}) になります。

設定されたパスがわからない場合、ドメインの下のすべてのCookieを削除する方法はありません。したがって、上記の for ループが '/' の下で実行された場合、'/admin/' パスに指定された Cookie はすべて残ります - それらは '/' パスに公開されていないためです

于 2012-05-21T10:42:08.837 に答える
0

設計上、Cookie は最初に pr-domain、次に pr-path に保存されます。これは、cookie を mydomain.tld/rootpath/ パスに割り当てると、後続のすべてのパスが同じ cookie を使用することを意味します。

あなたがする必要があるのは、クッキーが作成されたときに、パラメーターを構成「パス」に渡すことです。たとえば、次のようになります。

mydomain.tld/foo.htmlで、cookie が js ブロックに設定されている場合は、次を使用します。

dojo.cookie("mCookie", "contents", {path: '/', domain:'mydomain.tld'})
// domain is the default, can be omitted
于 2012-05-18T09:55:46.253 に答える