我们使用安全的Cookie来记住我们网站上的帐户。帐户处理完成后,将删除Cookie,并将处理重定向到站点内的页面以选择下一个帐户。
在本地调试时,将按预期删除cookie。但是,将站点部署到生产IIS服务器时,即使我可以在响应cookie中看到过期的cookie,浏览器也不会使该cookie失效。
以下代码在startup.cs中:
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => false;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
设置和删除cookie的代码在这里:
public static void SetCookie<T>(this IHttpContextAccessor ca, string key, T cookieData, TimeSpan timeToLive)
{
var json = JsonConvert.SerializeObject(cookieData);
var options = new CookieOptions {
Domain = ca.HttpContext.Request.Host.Host,
Expires = DateTime.Now + timeToLive,
HttpOnly = true,
IsEssential = true,
SameSite = SameSiteMode.Strict,
Secure = true
};
ca.HttpContext.Response.Cookies.Append(key, json, options);
}
public static void RemoveCookie(this IHttpContextAccessor ca, string key)
{
var options = new CookieOptions {
MaxAge = new TimeSpan(-1),
Expires = DateTime.Now.AddDays(-1),
Secure = true
};
ca.HttpContext.Response.Cookies.Delete(key, options);
}
我不确定从这里去哪里。预先感谢您的帮助。
最好的问候, 吉米