浏览器首次启动时,Cookie Consent始终为null

时间:2019-03-05 10:58:34

标签: asp.net cookies

问题:当浏览器首次启动(Edge,Firefox,Chrome)时,我的cookie“ MyConsentCookie”始终为空,无论它是先前设置还是手动删除。但是,当打开新标签页时,该操作是预期的-即如果先前设置了cookie,则cookie不为null,因此如果cookie存在,则不会显示我的横幅。

问题:为什么在首次启动浏览器后输入网站URL时,浏览器发送的Cookie集合中没有包含“ MyConsentCookie”?

详细信息::我创建了ActionFilterAttribute的子类,并重写了OnActionExecuting()方法来设置一些实现Cookie同意横幅所需的viewBag变量-请参见Maarten88。根据viewBag.HasCookieConsent是true还是false来显示Cookie同意横幅。我的代码有些简化:

public override void OnActionExecuting(ActionExecutingContext filterContext) 
{
  var controller = filterContext?.Controller as Controller;
  var viewBag = controller?.ViewBag;

  var cookie = filterContext?.HttpContext?.Request?.Cookies["MyConsentCookie"];
  if (cookie == null)
  {
      viewBag.HasCookieConsent = false;
      CookieOptions option = new CookieOptions
      {
        Expires = DateTime.UtcNow.AddYears(1)
      };
      filterContext?.HttpContext?.Response?.Cookies?.Append("MyConsentCookie", "set", option);
  }
  else
  {
      viewBag.HasCookieConsent = true;
  }
  base.OnActionExecuting(filterContext);
}

我的意图是,横幅广告仅应在用户首次将我的网站的URL输入其浏览器时显示。此后,直到Cookie一年后过期,它才应再次显示。看起来,只要终止浏览器,就会自动删除cookie,因此每次重新启动浏览器并输入URL时,横幅总是显示。每当浏览器终止时,如果永久性Cookie被删除,为什么还要烦恼它呢?

0 个答案:

没有答案