首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cookie持久性:无法设置过期日期

Cookie持久性:无法设置过期日期
EN

Stack Overflow用户
提问于 2016-10-10 04:01:23
回答 1查看 555关注 0票数 1

我试图改变一个MVC网站,该网站在会话中存储一些信息,以将其存储在cookie中,但在cookie到期时出现了一些问题。

场景登录到站点时,将创建cookie并将其添加到当前的HttpContext响应cookie集合中。用于编写cookie的代码片段如下:

代码语言:javascript
复制
HttpCookie userCredsCookie = _context.Response.Cookies.Get(Constants.Web.UserCredentialsCookieName) ?? new HttpCookie(Constants.Web.UserCredentialsCookieName);
                userCredsCookie.HttpOnly = true;
                userCredsCookie.Secure = true;
                userCredsCookie.Value = user.ID.ToString();
                userCredsCookie.Expires = DateTime.Now.AddMinutes(user.CompanySessionTimeout + user.TimezoneOffset);                
                _context.Response.Cookies.Add(userCredsCookie);

我已经尝试删除设置cookie到期的行,并发现cookie是按预期在客户端生成和存储的。

当我使用Fiddler检查来自服务器的响应时,我可以看到返回了userCreds cookie:

代码语言:javascript
复制
Response sent 111 bytes of Cookie data:
    Set-Cookie: UserCreds=e2ce8200-fb38-45b9-8aec-4d93e6640a84; expires=Mon, 09-Oct-2017 16:20:43 GMT; path=/; secure; HttpOnly

当未设置到期日期时,响应具有:

代码语言:javascript
复制
Response sent 72 bytes of Cookie data:
 Set-Cookie: UserCreds=e2ce8200-fb38-45b9-8aec-4d93e6640a84; path=/; secure; HttpOnly

只要未设置到期日期,浏览器就会接受cookie,并在随后从浏览器发出的请求中发送cookie。

问题似乎是由于响应中日期的格式造成的,但我找不到任何东西允许我更改该格式。

任何帮助都将不胜感激。

问候蒙蒂

更新-可能的原因定位到

我发现我现在的问题是时间问题。看来,我的dev pc可能正在处理ajax调用的响应,这些响应设置cookie的速度太快(?)这可能吗?)。

当我调试前端代码以确保从这个角度来看一切都很好时,我发现,通过在将window.location设置为ajax调用结果中的url的行前面放置一个断点,接下来的调用是在请求中使用cookie进行的。

也许,通过使回调的处理暂停,系统有时间持久化cookie。我假设持久化cookie的过程是进行验证检查,然后存储数据。这意味着,当cookie是到期日期设置时,验证cookie需要稍长的时间。可能是因为一个新的url负载中断了进程,从而导致cookie没有被存储,所以没有保存没有到期集的cookie。

通过在ajax调用的成功处理程序中添加1毫秒延迟(是的,仅1毫秒),我能够成功地将cookie持久化到浏览器,并包含在加载ajax响应中的返回url的调用中。

这听起来可能吗?

EN

回答 1

Stack Overflow用户

发布于 2016-10-10 04:40:07

尝试使用以下代码

代码语言:javascript
复制
int result = Convert.ToInt32(user.CompanySessionTimeout.ToString()) + Convert.ToInt32(user.TimezoneOffset)

然后通过

代码语言:javascript
复制
userCredsCookie.Expires = DateTime.Now.AddMinutes(result);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39951133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档