6

我希望我的 cookie 在用户关闭浏览器时消失——我已经设置了一些看起来很有希望的属性,但是即使在关闭整个浏览器后我的 cookie 也会重新恢复。

HttpCookie cookie = new HttpCookie("mycookie", "abc");
cookie.HttpOnly = true; //Seems to only affect script access
cookie.Secure = true; //Seems to affect only https transport

我缺少什么属性或方法调用来实现内存 cookie?

4

6 回答 6

7

浏览会话结束后,未明确设置过期的 Cookie 将自动消失。

现在,“浏览会话”对不同的浏览器意味着不同的东西。对于某些浏览器,这意味着浏览器的每个实例都已关闭。对于某些人来说,这只是意味着相关选项卡或原始浏览器已关闭。

在您的测试中,请确保在重新打开以查找 cookie 之前关闭浏览器的每个实例。如果您仍然有问题,请发布浏览器名称和修订版。

于 2010-12-21T15:28:59.610 回答
7
cookie.Expires = DateTime.MinValue;

此 cookie 将在浏览器关闭后立即过期。

于 2010-12-21T15:20:28.970 回答
4

如果您没有设置 Cookie.Expires 属性,则 cookie 将在浏览器会话结束时设置为过期。

于 2010-12-21T15:34:11.137 回答
2

如果从此处获取,Cookie 不会在浏览器关闭时被销毁

 HttpCookie cookie = new HttpCookie(name);
 cookie.Value = value;
 cookie.Expires = Convert.ToDateTime(“12/12/2008″);  //*difference is here*//
 Response.Cookies.Add(cookie);}

Cookie 将在浏览器关闭时丢失,如果

     HttpCookie cookie = new HttpCookie(name);
     cookie.Value = value;
     Response.Cookies.Add(cookie);}
于 2014-09-13T08:57:52.817 回答
1

看看 ASP.NETSession变量。这将根据您的浏览器持续存在,并且可以设置为“无cookie”或硬超时。

http://msdn.microsoft.com/en-us/library/h6bb9cz9%28VS.71%29.aspx

于 2010-12-21T15:18:10.243 回答
1

在浏览器打开的情况下处理非持久性 cookie 超时的最佳方法是为超时添加一个键值。下面的代码用于登录用户 ID 密钥值和加密(不包括)安全性以实现浏览器兼容性。我不使用表单身份验证。

HttpCookie cookie = new HttpCookie(name);
cookie.Values["key1"] = value;
cookie.Values["key2"] = DateTime.Now.AddMinutes(70).ToString(); 
                             //timeout 70 minutes with browser open
cookie.Expires = DateTime.MinValue;
cookie.Domain = ConfigurationManager.AppSettings["website_domain"];
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);

检查 cookie 键值时,请使用:

try
{

DateTime dateExpireDateTime;
dateExpireDateTime = DateTime.Parse(HttpContext.Current.Request.Cookies[name]["key2"]);

if (DateTime.Now > dateExpireDateTime)
{
//cookie key value timeout code
}
else
{
//reset cookie
}

catch
{
//clear cookie and redirect to log in page
}

我发现使用表单身份验证和 Google Chrome 存在兼容性问题。

于 2014-04-15T13:56:12.003 回答