【问题标题】:Why is it that my cookie is not getting deleted/unset?为什么我的 cookie 没有被删除/取消设置?
【发布时间】:2010-10-12 22:12:59
【问题描述】:

我有一个登录链接,该链接会触发一个调用注销页面的 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 取消它,但显然不是。有什么想法/建议吗?

【问题讨论】:

    标签: asp.net jquery vb.net cookies


    【解决方案1】:

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

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

    【讨论】:

    • 好的,所以我进入我的注销页面,它说没有设置 cookie (request.cookies.count = 0),但是当它重定向到登录页面时,cookie 会重新出现?真烦人。
    • 回复:AppendCookie:“此 API 支持 .NET Framework 基础结构,不能直接从您的代码中使用。” Ref
    【解决方案2】:

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

    【讨论】:

    • 好建议。使用 jQuery 设置 cookie 然后在另一个路径上的 ASP 页面中将其删除时,出现了我的问题。
    猜你喜欢
    • 1970-01-01
    • 2015-12-10
    • 2012-09-22
    • 1970-01-01
    • 2013-05-22
    • 2011-10-21
    相关资源
    最近更新 更多