asp.net mvc cookies 无法删除的问题。
排除问题,百度找到相关的
(1) 坑爹的事情Response.Cookies.Remove删除不了Cookie 【不是这个】
(2) public static void RemoveCookie(string name)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies[name];
if (cookie == null)
{
cookie = new HttpCookie(name);
}
cookie.Value = string.Empty;
cookie.Expires = DateTime.Now.AddDays(-30);
HttpContext.Current.Response.AppendCookie(cookie);
}
【用的是这个,但360极速浏览器里就是删除不到】
(3)其它可能的原因,RedirectToAction,或其它Response.End(),阻止了Response输出到客户端。【我用Fiddler 4都查到了,是有输出到客户端的】
(4) .net iis版本问题?一半是了,我本地测试可以在360浏览器删除cookie,传到服务器.net4.8+iis就删除不到了。
(5) 查了半天,最终问题出在这个参数上
最终问题是找到了,网上也有相关.net core cookie相关的问题,但我用的不是.net core,是.net4.5 mvc 5。
.net core版本可以控制到SameSite这参数的输出,我mvc5没有这参数设置?怎么设置???
var cookie = new HttpCookie(name);
cookie.SameSite=???? 我.net4.5版本的没有这东西?怎么办
public System.Web.SameSiteMode SameSite { get; set; }
没办法了,.net4.5我暂时没找到控制samesite输出的方法,360浏览器也没修复SameSite=none不能删除cookie的问题。
目前暂时用Response.Headers.Add直接设置Set-Cookie属性来删除cookie了。大家有什么更好的方法对付SameSite,留言提供下,谢谢。
调试时,明明能看到属性SameSite 可编程写代码时,没有这属性。
可我调试的事实,就是看到有这属性了。为什么?为什么不是public成员!!!
第一重删除方法
Response.Headers.Add("Set-Cookie", "xiaocuigogo=e; expires=Fri, 29-Nov-2019 08:03:32 GMT; path=/; HttpOnly;");
第二重是直接通过iis的url重定功能,修改Response Set-Cookie的信息替换后,再输出
IIS的SameSite Cookies
https://www.petefreitag.com/item/850.cfm