Cookie在Web表单中的最大年龄

本文关键字:Web 表单 Cookie | 更新日期: 2023-09-27 18:25:30

是否可以在Web窗体应用程序中设置Cookie的最大年龄?我知道,设置Expire是可以的,但有办法设置Max Age吗?

Cookie在Web表单中的最大年龄

Asp.Net没有在HttpCookie上专门提供此属性,可能是因为它们非常以Microsoft为中心,并且IE不支持最长年龄(至少从IE11开始)

然而,你仍然可以这样做。以下是一些代码,演示了设置此cookie的最大年龄的正确和无效方法:

// doesn't work:
var mytestcookie = new HttpCookie("regular_httpcookie", "01");
mytestcookie.Values.Add("max-age", "300");
Response.Cookies.Add(mytestcookie);
// *does* work:
Response.Headers.Add("set-cookie", "testingmaxage=01;max-age=300; path=/");

它在HTTP响应中呈现为这样:

Set-Cookie  testingmaxage=01;max-age=300; path=/
X-AspNet-Version    4.0.30319
Set-Cookie  regular_httpcookie=01&max-age=300; expires=Fri, 10-Jun-2016 15:02:15 GMT; path=/

如上所述,如果使用HttpCookie设置cookie,这将在响应上创建第二个"设置cookie"标头,但浏览器不会介意,它只会将其添加到cookie列表中。

我在IE11和Chrome上进行了测试,这是没有问题的——只要它们有不同的名称,cookie都会进入如果cookie名称与HttpCookies中已设置的名称冲突,则中的最后一个名称获胜。查看HTTP响应的文本,看看最后是哪一个。(最好只是确保它们不会发生冲突)

正如我在一开始提到的,当在IE11上测试时,我注意到它忽略了cookie的最大年龄属性。以下是解决该问题的方法链接:设置Cookie:Expire属性、时钟偏移和Internet Explorer问题