使用Javascript删除会话cookie

时间:2011-02-02 10:59:56

标签: javascript-events

我正在开发一个删除会话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
    }

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

LiSESSIONID

7A10E3453B01DDFF934AC7AF71EAFEC3     forums.lithiumstage.tomtom.com
43 B

/

会话

的HttpOnly

有谁知道为什么我不能杀死cookie? jQuery函数状态表示undefined甚至我加载函数

谢谢

2 个答案:

答案 0 :(得分:0)

原因是因为设置了HttpOnly标志。这意味着只有服务器端代码才能修改此cookie。

请参阅:http://www.owasp.org/index.php/HTTPOnly

答案 1 :(得分:0)

必须在服务器端删除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(我不建议这样做)。