Cookies на внешнем сервере - PullRequest
       2

Cookies на внешнем сервере

0 голосов
/ 21 декабря 2018

Я использую приведенный ниже код для обработки файлов cookie, он отлично работает локально, но когда я загружаю его на наш тестовый сервер, файлы cookie не устанавливаются (то же самое для Firefox, IE и Chrome, поэтому я не думаю, что этопроблема с браузером).

Файлы cookie разрешены, поскольку я могу устанавливать файлы cookie с помощью PHP setcookie("RFT_reeftWpLang", $lang, time()+29030400, dirname($_SERVER["SCRIPT_NAME"]), $_SERVER["SERVER_NAME"]);

Ни локально, ни на сервере я не получаю никаких ошибок при попытке установить document.cookie, нона сервере console.log( getFilterCookie(cname)); вернуть пустую строку, где я получаю ожидаемое значение локально.

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

function setFilterCookie(cname,cvalue,exdays) {
    var cookiePath = "/";
    var pathArray = window.location.pathname.split( '/' );
    if (pathArray.length > 2 && $.trim(pathArray[1]) != "" ) {
        cookiePath = cookiePath+pathArray[1];
    }
    var d = new Date();
    d.setTime(d.getTime()+(exdays*24*60*60*1000));
    var expires = "expires="+d.toGMTString();
    try {
        document.cookie = cname+"="+cvalue+"; "+expires+"; domain="+window.location.host+"; path="+cookiePath ;
    } catch (e) {console.log(e);}
    if(exdays < 0) {
        document.cookie = cname+"="+cvalue+"; "+expires;
    }
    console.log( getFilterCookie(cname));
}

function getFilterCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
        var c = $.trim(ca[i]);
        if (c.indexOf(name)==0) {
            return c.substring(name.length,c.length);
        }
    }
    return "";
}

function delFilterCookie(cname) {
    setFilterCookie(cname, "", -1);
}

1 Ответ

0 голосов
/ 21 декабря 2018

Спасибо за помощь

На нашем тестовом сервере у нас есть порт в URL, поэтому он получает часть домена, он работает после того, как я изменил свой код на

var domainArray = window.location.host.split( ':' );
var domain = domainArray[0];

try {
console.log(document.cookie = cname+"="+cvalue+"; "+expires+"; domain="+domain+"; path="+cookiePath);
} catch (e) {
    console.log(e);
    console.log("fail setFilterCookie"  + cname + " - " + cvalue + " - " + exdays);}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...