我正在设置一个cookie:
HttpCookie cookie = new HttpCookie("simpleorder");
cookie.Expires = DateTime.Now.AddYears(1);
cookie["order"] = carModel.ToString();
cookie["price"] = price.ToString();
Response.Cookies.Add(cookie);
Run Code Online (Sandbox Code Playgroud)
但是当我几秒钟检查它时它已经过期,并且到期日期设置为{01-01-0001 00:00:00}.我尝试通过检索代码
HttpCookie cookie = Request.Cookies["simpleorder"];
if (cookie != null && cookie.Expires > DateTime.Now)...
Run Code Online (Sandbox Code Playgroud)
我不清楚任何地方的cookie,所以我不知道为什么它会过期?
Ant*_*nes 19
这是常见的误解.请求cookie集合表示请求cookie标头中包含的cookie.此类cookie不包含任何有关何时到期的信息.严格来说,.NET应该使用两种不同的类型(RequestCookie和ResponseCookie),而是选择在两种情况下使用相同的类型.
Expires值仅在将Cookie添加到响应时才有意义.
起初我也很失望请求cookie没有Expires值,但是在使用Fiddler2调试后,我知道http协议不包含Expires请求cookie的任何值。.NET Framework 无法公开Expires请求 cookie 的值。
如果您在应用程序和浏览器之间使用 Fiddler,您可以看到响应 cookie 正确发送到浏览器的所有属性。但是,http 标头中的请求 cookie 没有 expires 值,它只公开 cookie 名称和值。浏览器需要发送此请求标头,如 http 标准中所指定。原因可能是最小化大小,并且 Web 服务器不需要检查除值以外的任何内容。
所以你不需要检查expiresweb 请求的值,因为它是你在一些早期的 web 响应中设置的。如果您收到 cookie,则表示 cookie 尚未过期。一旦你设置了这个expires值,浏览器就会处理过期。如果您想更改过期时间,只需在响应中设置新值。
| 归档时间: |
|
| 查看次数: |
8219 次 |
| 最近记录: |