Mar*_*cin 6 c# cookies asp.net-web-api asp.net-web-api2
我试图删除特定Set-Cookie的报头HttpResponseHeaders中OnActionExecuted的方法ActionFilter.
我遇到的问题很少:
Set-Cookie可以有多个条目.目前我正在删除所有cookie,但这不是我想要的.
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{                
   HttpResponseHeaders headers = actionExecutedContext.Response.Headers;
   IEnumerable<string> values;
   if (headers.TryGetValues("Set-Cookie", out values))
   {
       actionExecutedContext.Response.Headers.Remove("Set-Cookie");
   }
   base.OnActionExecuted(actionExecutedContext);
}
从链接:
您无法直接删除用户计算机上的cookie.但是,您可以通过将cookie的过期日期设置为过去日期来指示用户的浏览器删除cookie.下次用户向设置cookie的域或路径中的页面发出请求时,浏览器将确定cookie已过期并将其删除.
那么,如何在动作过滤器级别删除/删除ASP.NET Web Api中的cookie,只需尝试将cookie的过期日期设置为过去的日期:
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
    var response = actionExecutedContext.Response;
    var request = actionExecutedContext.Request;
    var currentCookie = request.Headers.GetCookies("yourCookieName").FirstOrDefault();
    if (currentCookie != null)
    {
        var cookie = new CookieHeaderValue("yourCookieName", "")
        {
            Expires = DateTimeOffset.Now.AddDays(-1),
            Domain = currentCookie.Domain,
            Path = currentCookie.Path
        };
        response.Headers.AddCookies(new[] { cookie });
    }
    base.OnActionExecuted(actionExecutedContext);
}
| 归档时间: | 
 | 
| 查看次数: | 4726 次 | 
| 最近记录: |