Javascript Get Cookie Issue

У меня проблемы с настройкой файлов cookie для домена и субдомена этого домена. Хотя я не могу разглашать доменное имя, я могу, однако, назвать его "domain.com" и предоставить код.

Я пытаюсь добиться следующего: посетитель заходит на domain.com и определенные куки установлены. Когда он достигает определенной страницы на subdomain.domain.com, эти куки должны быть прочитаны.

Если пользователь попадает прямо на страницы субдомена, куки-файлы устанавливаются правильно, и все в порядке, но если он попадает на страницы основного домена, куки не устанавливаются. Вы можете мне помочь?

Опять же, я должен подтвердить, что приведенные ниже коды работают, когда субдомен устанавливает файлы cookie, но файлы cookie не устанавливаются при посещениях основного домена (и да, сценарий также находится на страницах основного домена). Я проверил с firebug и firecookie.

Это мой код для установки куки:

function setCookie(c_name,value) {
    var now = new Date();
    var time = now.getTime();
    time += 3600 * 1000;
    now.setTime(time);
    var c_value=escape(value);
    document.cookie=c_name + "=" + c_value + '; path=/;domain=.domain.com';
}

И это мой код получения значений cookie:

function getCookie(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);
        }
    }
}

2 ответа

Решение

Какая ошибка новичка с моей стороны. Функция set cookie была вызвана на ранней стадии процесса и не установила никаких файлов cookie вообще.

Благодаря Джиму Дэвису, ваша настойчивость заставила меня присмотреться к моему коду.

Ваши пользователи высшего уровня вообще используют поддомен? Даже "www"?

Если нет, то я думаю (и, если честно, это предположение), проблема может заключаться в том, что вы указали, что cookie действителен во всех поддоменах, но НЕ в домене верхнего уровня. Попробуйте убрать предыдущую "точку".

Например, если ваши пользователи нажимают " http://domain.com/", то я не думаю, что будут возвращены файлы cookie, установленные для ".domain.com". С другой стороны, если они нажимают "www.domain.com", тогда "www" - это просто еще один поддомен, и все это должно работать.

Есть смысл?

Другие вопросы по тегам