我尝试在Set-Cookie
的{{1}}方法中删除HttpResponseHeaders
中的特定OnActionExecuted
标题。
我对此几乎没有问题:
ActionFilter
可以有多个
条目。目前我删除了所有Cookie,但这不是我想要的。
Set-Cookie
答案 0 :(得分:6)
来自link:
您无法直接删除用户计算机上的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);
}