【发布时间】:2012-03-12 20:36:00
【问题描述】:
我正在尝试删除我的网站使用的所有 cookie,但从阅读中我不能这样做,所以我相信我唯一的选择是将过期日期更改为过去并让浏览器完成工作。我现在有一个名为“CookieDisplay”的cookie。在 asp.net 的页面加载事件中,我有:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
For Each key As String In Request.Cookies.AllKeys
Dim cookie As New HttpCookie(key)
If (Not Request.Cookies(cookie.Name.ToString) Is Nothing) Then
cookie.Expires = DateTime.Now.AddDays(-1D)
Response.Cookies.Add(cookie)
End If
Next
End Sub
此代码查找“CookieDisplay”的 cookie 并更改到期日期。但是在客户端,我有在页面加载事件之后触发的 javascript,如下所示。
function getCookie(c_name) {
var i, x, y, ARRcookies = document.cookie.split(";");
for (i = 0; i < ARRcookies.length; i++) {
x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
x = x.replace(/^\s+|\s+$/g, "");
if (x == c_name) {
return unescape(y);
}
}
}
function checkCookie() {
var SavedData = getCookie("CookieDisplay");
if (SavedData != null && SavedData == "true") {
closeme();
}
}
问题是 cookie 正在返回一个值,因此过期日期尚未生效,因此 cookie 不会过期,因此仍会显示。可能是因为这个 cookie 是在 javascript 中创建的,而 asp.net 无权访问它吗?我是否必须根据 cookie 的创建位置使 javascript 和 asp.net 中的 cookie 过期?
谢谢
【问题讨论】:
标签: javascript asp.net cookies web