我能否以编程方式防止由于 Cookie 大小而引发 400 错误?



我的团队维护着一套C#应用程序,这些应用程序都共享一组通用的cookie。

最近,我们遇到了 cookie 大小变得太大的情况,用户在访问我们的生产站点时开始遇到 400 错误。

我写了一个小的网络表单应用程序,它将遍历我们的cookie列表并删除它们,其中不包括我们的共享代码,这些代码将尝试在Global.asax中读取/写入cookie:

foreach (var c in cookieList)
{
HttpCookie currentUserCookie = HttpContext.Current.Request.Cookies[c];
if (currentUserCookie != null)
{
HttpContext.Current.Response.Cookies.Remove(c);
currentUserCookie.Expires = DateTime.Now.AddDays(-10);
currentUserCookie.Value = null;
HttpContext.Current.Response.SetCookie(currentUserCookie);
}
}

但是,我们网站上的所有页面仍然抛出了错误。 我们能找到的唯一解决方案是让用户手动删除他们的cookie。

我们是否可以从服务器端触发删除我们的 cookie,并为我们的用户节省手动清除 cookie 的麻烦? 我们使用的是 IE11 和 Chrome 54。

此行尝试更新现有cookie(已从响应中删除)

HttpContext.Current.Response.SetCookie(currentUserCookie);

试试这个..

foreach (var c in cookieList)
{
HttpCookie currentUserCookie = HttpContext.Current.Request.Cookies[c];
if (currentUserCookie != null)
{
HttpContext.Current.Response.Cookies.Remove(c);
currentUserCookie.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(currentUserCookie);
}
}

相关内容

最新更新