Файл cookie не распознается при добавлении частей в URL (Javascript) - PullRequest
0 голосов
/ 13 сентября 2018

Ниже приведены две функции, которые я в настоящее время использую для заказа и создания своего cookie-файла (cookie-файл должен быть действителен только в течение 1 дня)

function set1DayValidationCookie(){
     var d = new Date();
     var today = d.getMonth() + '' + d.getDate();

     if (readCookie('onedaycookie') != today) {
         document.cookie = 'onedaycookie='+today;
         console.log('cookie has been created');
     } else {
         alert('cookie already exist!');
     }
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

При обновлении страницы cookie-файл распознается, например,Я изменил свой URL-адрес с www.mywebsite.com / ru / на www.mywebsite.com / ru / (для языковых целей). Снова создан файл cookie.

Я хотел бы спросить, что мне не хватает в этой части?

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Я бы предложил этот код

window.cookie = {
set: function(c_name, value, exdays, path = '/') {
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value = escape(value) + ((exdays == null) ? "" : ("; expires=" + exdate.toUTCString())) + "; path=" + path;
    document.cookie = c_name + "=" + c_value;
},
get: function(c_name) {
    var i, x, y, ARRcookies = document.cookie.split(";");
    for (i = 0; i < ARRcookies.length; i++) {
        x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
        y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
        x = x.replace(/^\s+|\s+$/g, "");
        if (x == c_name) {
            return unescape(y);
        }
    }
}
};

И вы можете проверить так:

if("undefined" !== typeof cookie.get('lang')){
     //cookie is not set
     cookie.set('lang', 'en', 1);
}else{
     //cookie is set
}
0 голосов
/ 13 сентября 2018

Вам необходимо установить для части куки path значение /.Тогда он будет работать для всех путей.

document.cookie = "username=John Smith; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/"; 

Без пути, файл cookie будет установлен только для текущего пути.

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