首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Response.Redirect上的ASP.NET Cookie过期值重置?

Response.Redirect上的ASP.NET Cookie过期值重置?
EN

Stack Overflow用户
提问于 2009-01-15 06:40:49
回答 4查看 9.3K关注 0票数 3

我有一个读取表单并将一些信息放入cookie的脚本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Dim oCookie as HttpCookie
oCookie = New HttpCookie("authInfo")
Select Case oResult
Case "No ClientID", "No Password", "No PracType", "No Encrypt", "CRC Mismatch"
    oCookie.Values.Add("LoggedIn", "False")
    oCookie.Values.Add("OnSupport", "False")
Case "Client Can Update"
    oCookie.Values.Add("LoggedIn", "True")
    oCookie.Values.Add("OnSupport", "True")
Case "Client Cannot Update"
    oCookie.Values.Add("LoggedIn", "True")
    oCookie.Values.Add("OnSupport", "False")
End Select
oCookie.Expires = DateTime.Now.AddHours(2)
HttpContext.Current.Response.Cookies.Add(oCookie)
HttpContext.Current.Response.Redirect("default.aspx")

时间在它重定向之前被正确设置,但是当我尝试以这种方式打印该值时(我也尝试了Dim oCol as HttpCookieCollection = Request.Cookies,但我得到了相同的结果):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Response.Output.WriteLine(Request.Cookies("authInfo").Expires.ToString)

时间始终为reset "01/01/0001 12:00:00 AM"。我是否遗漏了阻止cookie保留其Expires值的内容?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-01-15 06:47:11

Request.Cookies和Response.Cookies以及通用cookie对象的使用是一种直观的习惯用法,但实际上请求cookie和响应cookie是完全不同的。

当您在响应中分配一个Cookie时,一个Set-Cookie标头将被添加到输出中,它不仅包含值,还包含path和expiries值。

但是,当浏览器在另一个请求中将cookie发送回服务器时,它只包含cookie名称和值。它不发送路径或过期信息。

因此,在使用Request.Cookies集合时,这些属性没有意义。

票数 11
EN

Stack Overflow用户

发布于 2012-03-07 06:44:38

我知道这是一个老话题,可能@Anders已经从这里转移到更大更好的事情上了。尽管如此,当我试图在我当前的HttpContext中保留Office365身份验证cookies时,我碰巧遇到了同样的问题。可以说,@AnthonyWJones的回答澄清了我对cookies的许多直觉。这是为像我这样的人写的,他们一定是接触过这个帖子,尽管交换了信息,但却不能找出一个环路来维持cookie的过期日期。以下是我最后尝试的内容: 1.在将cookie (其过期日期是必需的)添加到HttpResponse之前,我将其过期日期和域保留在我的DB中。2.然后可以将cookie添加到响应中,并保持其基本属性不变,如"Name“和"Value”。3.一旦从请求中检索到cookie,我就构建了一个新的cookie,其中包含从DB获取的域和过期日期以及其他属性。然后,我可以使用这些cookie向目标站点发起进一步的请求。

票数 5
EN

Stack Overflow用户

发布于 2009-01-15 06:50:53

当最初的请求来自不同的域时,我遇到了这样的问题。

确保还添加了cookie的域。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/446981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文