2

クライアントで実行しているときに dart で Cookie を削除するにはどうすればよいですか?

を使用して空の文字列に設定して削除しようとしました

document.cookie = 'cookie_to_be_deleted=""';

この行の後に cookie の値を出力すると、「cookie_to_be_deleted」の 2 つのインスタンスを持つキーと値のペアのセミコロンで区切られたリストが得られます。1 つは削除したいと思っていた元の値で、もう 1 つはその値として空の文字列です。

4

1 に答える 1

7

これを試して:

Date then = new Date.fromEpoch(0, new TimeZone.utc());
document.cookie = 'cookie_to_be_deleted=; expires=' + then.toString() + '; path=/';

これらのユーティリティはhttps://gist.github.com/d2m/1935339にあります

/* 
 * dart document.cookie lib
 *
 * ported from
 * http://www.quirksmode.org/js/cookies.html
 *
 */

void createCookie(String name, String value, int days) {
  String expires;
  if (days != null)  {
    Date now = new Date.now();
    Date date = new Date.fromEpoch(now.value + days*24*60*60*1000, new TimeZone.local());
    expires = '; expires=' + date.toString();    
  } else {
    Date then = new Date.fromEpoch(0, new TimeZone.utc());
    expires = '; expires=' + then.toString();
  }
  document.cookie = name + '=' + value + expires + '; path=/';
}

String readCookie(String name) {
  String nameEQ = name + '=';
  List<String> ca = document.cookie.split(';');
  for (int i = 0; i < ca.length; i++) {
    String c = ca[i];
    c = c.trim();
    if (c.indexOf(nameEQ) == 0) {
      return c.substring(nameEQ.length);
    }
  }
  return null;  
}

void eraseCookie(String name) {
  createCookie(name, '', null);
}
于 2013-08-28T19:47:44.990 に答える