Значение cookie всегда возвращает false - PullRequest
0 голосов
/ 31 мая 2018

Я использую cookiebot для соответствия GDPR, и пока что сценарий cookieBot не работает должным образом.Поэтому я должен добавить некоторую дополнительную функцию, чтобы иметь больше контроля над содержимым страницы, например включить / отключить раздел видео Embebed Youtube в качестве примера.

CookieBot хранит информацию о 4 типах файлов cookie в следующем формате, а неуверен, что это в правильном формате JSON?

{stamp: 'HMzWoJn8V4ZkdRN1DduMHLhS3dKiDDr6VoXCjjeuDMO2w6V + n2CcOg ==', необходимо: true, предпочтения: true, статистика: true, маркетинг: false, ver: 1} * 100 * * 8

использует
CookieConsent в качестве имени куки.

Я пытаюсь прочитать значение этих куки, когда пользователь нажимает на страницу, используя addEventListener

 document.addEventListener("click", function () {
                console.log("document capture click");
                readCookies();
            }, true);


            function readCookies() {
                console.log("Ready to Read");

                Cookies.get('CookieConsent')

                //Parse the cookie to Object

                cookieval = Cookies.get('CookieConsent');
                console.log(cookieval);

                console.log("Necessary: " + Boolean(cookieval.necessary));
                console.log("Prefrences: " + Boolean(cookieval.preferences));
                console.log("Statistics: " + Boolean(cookieval.statistics));
                console.log("Marketing: " + Boolean(cookieval.marketing));
            }

, для меня проблема в том, что всезначения возвращаются как ложные, я использую https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js для чтения значений cookie, не знаю, почему cookieval.marketing всегда возвращает ложное значение, даже если оно истинно в cookie

OUTPUT

Ready to Read
{stamp:'HMzWoJn8V4ZkdRN1DduMHLhS3dKiDDr6VoXCjjeuDMO2w6V+n2CcOg==',necessary:true,preferences:true,statistics:true,marketing:false,ver:1}
Necessary: false
Prefrences: false
Statistics: false
Marketing: false

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Вам нужно выполнить синтаксический анализ json-подобной строки следующим образом

var cookieStr = Cookies.get('CookieConsent');  //{stamp:'HMzWoJn8V4ZkdRN1DduMHLhS3dKiDDr6VoXCjjeuDMO2w6V+n2CcOg==',necessary:true,preferences:true,statistics:true,marketing:false,ver:1}

cookieStr = cookieStr.substr(1, cookieStr.length - 2);  //Get rid of {} marks

var cookieArr = cookieStr.split(',')    //Separate properties

var cookieObj = {}
cookieArr.forEach(function(item) {
   cookieObj[item.split(':')[0]] = item.split(':')[1];    //Assemble new object
})

console.log("Necessary: " + cookieObj.necessary);
0 голосов
/ 31 мая 2018

Cookies.get('CookieConsent'); собирается вернуть строку .

Если вы хотите преобразовать JSON в объект JavaScript, то вам нужно его проанализировать.


Примечание:

{марка: 'HMzWoJn8V4ZkdRN1DduMHLhS3dKiDDr6VoXCjjeuDMO2w6V + n2CcOg ==', необходимо: правда, предпочтения: правда, статистика: правда, маркетинг: ложные, версия: 1}

1013*

… недопустим JSON.

Вам также необходимо изменить код, который устанавливает cookie, чтобы он генерировал действительный JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...