ASP.NET Core CookieConsent установлен неопределенно - PullRequest
3 голосов
/ 11 октября 2019

Я использую встроенную функцию ASP.NET Core CookieConsent без изменений:

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<CookiePolicyOptions>(options =>
    {
        // This lambda determines whether user consent for non-essential cookies is needed for a given request.
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.None;
    });

    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

С клиентским JavaScript:

 <script>
        (function () {
            document.querySelector("#cookieConsent button[data-cookie-string]").addEventListener("click", function (el) {
                document.cookie = el.target.dataset.cookieString;
                document.querySelector("#cookieConsent").classList.add("hidden");
            }, false);
        })();
  </script>

При развертывании в производство ведет себя случайным образом:иногда cookie получает правильное имя, иногда cookie становится неопределенным. После некоторых исследований data-cookie-string=".AspNet.Consent=yes; expires=Sat, 10 Oct 2020 09:56:49 GMT; path=/; secure; samesite=lax"> всегда одинаков (за исключением даты изменения), проблема, похоже, связана с командой document.cookie.

Браузер (последняя версия Google Chrome) сохраняет cookie с пустым именем и значением undefined.

Кто-нибудь испытывал такое поведение? Спасибо

1 Ответ

0 голосов
/ 11 октября 2019

Кажется, проблема в формате даты expires=. Этот тест решил проблему:

<script>
    (function () {
        document.querySelector("#cookieConsent button[data-cookie-string]").addEventListener("click", function (el) {

            var now = new Date();
            var expires = (new Date(now.getFullYear() + 1, 12, 31).toUTCString());

            document.cookie = '.AspNet.Consent=yes;expires=' + expires  + ';path=/;';                  
            document.querySelector("#cookieConsent").classList.add("hidden");
        }, false);
    })();
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...