我正在使用 cookie,我碰巧使用 JavaScript 创建它,但是当我在我的过程完成后尝试使该 cookie 过期时,使用 C# 代码隐藏文件,我无法找到指定的 Cookie??
这可能是什么原因?我认为用 JavaScript 创建的 cookie 无法使用 C# 访问/可见 ...?是真的吗??
这是我在 JS 中创建 cookie 的代码
var expiryDate = new Date();
expiryDate.setTime(expiryDate.setDate(expiryDate.getDate() + 1)); // 365 days
document.cookie = "ReferedCookie=" + "clientId=" + UserGuid + "&productId=" + productId + "&Token=" + token + ";" + "expires=" + expiryDate.toGMTString() + ";";
这是我用于查找和过期 cookie 的 C# 代码
public void DeleteCookie(string Name)
{
if (System.Web.HttpContext.Current.Request.Cookies["ReferedCookie"] != null)
{
HttpCookie myCookie = new HttpCookie(Name);
myCookie.Expires = DateTime.Now.AddDays(-5d);
System.Web.HttpContext.Current.Response.Cookies.Add(myCookie);
}
}
提前致谢。
最佳答案
问题可能出在 cookie 的 Path
属性上。
当使用 Javascript 设置 cookie 时,cookie 的默认路径将基于设置 cookie 的页面的位置。
为了使该 cookie 过期,您必须指定相同的路径。所以如果你有一个页面:
http://test.foo.com/somepath/default.asxp
并且您使用问题中的 javascript 代码在此页面上设置 cookie,cookie 的默认路径为:
/somepath/
这意味着浏览器会将此 cookie 发送到该路径下的所有页面。它不会被发送到该路径之外的页面。
要使来自服务器的这个 cookie 过期,你需要指定 cookie 的路径:
HttpCookie myCookie = new HttpCookie(Name);
myCookie.Expires = DateTime.Now.AddDays(-5d);
myCookie.Path = "/somepath/";
System.Web.HttpContext.Current.Response.Cookies.Add(myCookie);
或者,您必须在最初将 cookie 设置为(例如)/
时指定路径:
document.cookie = "ReferedCookie=" + "clientId=" + UserGuid + "&productId=" + productId + "&Token=" + token + ";" + "expires=" + expiryDate.toGMTString() + ";path=/";
然后在同一路径上过期。
关于c# - 使用 Javascript 创建的 Cookie 无法在 C# 代码中访问....有什么原因或其他选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12176580/