【问题标题】:Delete session cookies by using Javascript使用 Javascript 删除会话 cookie
【发布时间】:2011-02-02 10:59:56
【问题描述】:

我正在开发一个删除会话 cookie 的功能

这里是源代码:

<script language="javascript">
window.onload = function ()
{
   /* $.cookie('!lithiumSSO:tomtom.stage', null);
    $.cookie('LiSESSIONID', null);*/
        delete_cookie('LiSESSIONID');
         delete_cookie('!lithiumSSO:tomtom.stage');

};
function delete_cookie ( cookie_name )
    {
        var cookie_date = new Date ( );  // current date & time
        cookie_date.setTime ( cookie_date.getTime() - 1 );
        document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
        alert('name:' +cookie_name);
        jQuery.cookie('LiSESSIONID', null); //Try to using jQuery
    }

</script>

我可以设置弹出窗口显示name:LiSESSIONID=; expires=Wed, 02 Feb 2011 10:56:52 GMT。比这晚了一个小时。但是,当我使用 firecookies 时,我看到这个 cookie 仍然存在:

LiSESSIONID
    
7A10E3453B01DDFF934AC7AF71EAFEC3
    forums.lithiumstage.tomtom.com  
43 B
    
/
    
Session
    
HttpOnly

有人知道为什么我不能杀死 cookie 吗?即使我加载函数,jQuery 函数状态也显示未定义。

【问题讨论】:

    标签: jquery jquery-events


    【解决方案1】:

    原因是设置了 HttpOnly 标志。这意味着只有服务器端代码可以修改这个cookie。

    见:http://www.owasp.org/index.php/HTTPOnly

    【讨论】:

    【解决方案2】:

    必须在服务器端删除 cookie。我没有关于您使用的是什么语言的信息,但如果它是 node + express 它会是这样的:

    res.clearCookie('LiSESSIONID', {
      httpOnly: true,
      sameSite: true,
      domain: 'YOUR DOMAIN HERE',
    });
    

    HttpOnly 使用起来非常有趣,因为它是安全的,并且可以防止从浏览器 https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#restrict_access_to_cookies 更改它

    如果您想在浏览器中删除它,请在创建 cookie 时删除 httpOnly(我不推荐)。

    【讨论】:

      猜你喜欢
      • 2013-09-12
      • 2015-06-29
      • 1970-01-01
      • 2012-08-12
      • 2016-06-17
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 2012-05-23
      相关资源
      最近更新 更多