为什么我的cookie没有被删除/取消设置?

时间:2009-03-12 13:40:58

标签: asp.net jquery vb.net cookies

我有一个登录链接,可以触发调用注销页面的javascript函数。这是注销页面包含的内容:

 If Response.Cookies.Count > 0 Then
    Response.Cookies("aLog").Value = Nothing
    Response.Cookies.Clear()
End If

最初我只有cookies.clear,但那不起作用。

以下是将请求发送到注销页面的javascript:

<script type="text/javascript">
    //<![CDATA[
    $(document).ready(function() {
        $('#logout-link').click(function() {
            if (confirm("Really log out?")) {
                $.cookie('aLog', null);
                location.href = $(this).attr('href');
            }
            return false;
        });
    });
    //]]>
</script>

jQuery函数$.cookie也不起作用。这个cookie是由ASP.NET设置的,所以我想我也可以用ASP.NET取消它,但显然不是。有什么想法/建议吗?

2 个答案:

答案 0 :(得分:10)

在ASP.NET中使用cookie可能有点不直观。要杀死已经存在于客户端的cookie,您必须将其过期日期设置为过去的某个时间,并重新向客户端发送新的cookie。客户端浏览器将使用新的到期日期更新现有cookie,然后立即终止它,因为它已经过了截止日期:

HttpCookie cookie = Request.Cookies["aLog"];
cookie.Expires = DateTime.Now.AddYears(-10);
Response.AppendCookie(cookie);

答案 1 :(得分:4)

除了Rex所说的,你应该始终设置你使用的任何cookie的“路径”(通常是“/”之类的东西)。否则,cookie的可见性取决于URL中的文件夹名称,因此如果您有任何除了平面URL方案设置以外的任何内容,删除cookie将非常不可预测地工作。