Sof*_* Pk 3 .net javascript c# asp.net c#-4.0
我正在使用 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() + ";";
Run Code Online (Sandbox Code Playgroud)
这是我用于查找和过期 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);
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢。
问题可能Path出在 cookie的属性上。
使用 Javascript 设置 cookie 时,cookie 的默认路径将基于设置 cookie 的页面的位置。
为了使该 cookie 过期,您必须指定相同的路径。所以如果你有一个页面:
http://test.foo.com/somepath/default.asxp
Run Code Online (Sandbox Code Playgroud)
并且您使用问题中的 javascript 代码在此页面上设置 cookie,cookie 的默认路径为:
/somepath/
Run Code Online (Sandbox Code Playgroud)
这意味着浏览器会将此 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);
Run Code Online (Sandbox Code Playgroud)
或者,您必须在最初将 cookie 设置为(例如)时指定路径/:
document.cookie = "ReferedCookie=" + "clientId=" + UserGuid + "&productId=" + productId + "&Token=" + token + ";" + "expires=" + expiryDate.toGMTString() + ";path=/";
Run Code Online (Sandbox Code Playgroud)
然后在相同的路径上过期。