我有一个登录链接,可以触发调用注销页面的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取消它,但显然不是。有什么想法/建议吗?
答案 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将非常不可预测地工作。