Не удается получить доступ к cookie в javascript по пути /

#javascript #jquery #cookies

#javascript #jquery #файлы cookie

Вопрос:

Я использую jQuery для доступа / установки файлов cookie. Я установил файл cookie с именем CookieNo1 в path / .

Я установил это, используя URL localhost:8080/audi .

Сохраняется значение cookie, которое я проверил вручную в файлах cookie firefox. Теперь, когда я пытаюсь получить доступ к тому же файлу cookie, используя URL localhost:8080/audi/products с помощью $.cookie('CookieNo1');

Похоже, это не восстанавливает значение cookie. Он возвращает нулевое значение. Однако, когда я пытаюсь записать cookie, используя тот же localhost:8080/audi/products URL, он перезаписывает предыдущее значение cookie. Пожалуйста, помогите мне с этой проблемой.

Все, что мне нужно, это $.cookie('CookieNo1') вернуть предыдущее значение cookie вместо null. Заранее спасибо

Комментарии:

1. @Maxim это одна проблема с файлами cookie. С URL-адресом проблемы нет, как вы могли подумать, потому что файлы cookie хранятся для каждого домена и будут отправляться для каждого запроса от чего-либо, исходящего из этого домена. не могли бы вы проверить, что document.cookie возвращает этот URL http://localhost:8080/audi/products

2. @BookOfZeus Да, я использую jquery, добавил это и в вопросе

3. @MaximDsouza Я только что это увидел 😉 вы пробовали решение adeno?

4. @Deeptechtons document.cookie возвращает JSESSIONID=C987E73F47D5DB2C503B4652166C5F58

5. @BookOfZeus Adeno не дал никакого решения. var getmycookie = $.cookie(«mycookie»); возвращает мне значение null при обращении с URL http://localhost:8080/audi/products -адреса, когда файл cookie был установлен с помощью http://localhost:8080/audi

Ответ №1:

Вы должны установить дату истечения срока действия. В противном случае cookie удаляется в конце сеанса. В jQuery: $("CookieNo1", "value", {expires: 7}) (этот файл cookie сохраняется в течение 7 дней).

В JavaScript:

 document.cookie = "CookieNo1=value; max-age=604800";
  

max-age задает максимальное время жизни файла cookie в секундах.

Редактировать

Цитата из комментариев:

@RobW Я добавил cookie с помощью jquery на страницу http://localhost:8080/audi с помощью кода $.cookie("asdftraffic",
valueToSet, { expires: 30, path: '/', secure: true });
я пытаюсь извлечь файл cookie из URL-адреса http://localhost:8080/audi/products использование '$.cookie('asdftraffic');' которого возвращает значение null.

Ваша проблема вызвана secure: true . Этот атрибут требует, чтобы cookie передавался по защищенному соединению ( https ). Снимите secure: true флаг, если вы не используете зашифрованное соединение.

Комментарии:

1. Это не то, что я ищу. Я хочу получить доступ к cookie по пути / с url localhost:8080/audi/products

2. @MaximDsouza COL, файлы cookie сохраняются для каждого домена http://localhost:8080 и http://localhost:8080/audi/products выглядят для вас как разные домены??

3. @Deeptechtons Когда я сказал, что они принадлежат к разным доменам. Они находятся в одном домене, но cookie, установленный URL-адресом / audi, недоступен по URL-адресу /audi/products .

4. Ваши файлы cookie недоступны по другим путям, потому что срок их действия истекает при выгрузке вашей страницы . Это понятно?

5. @MaximDsouza ну, это так и было This is not what I am looking for. I want to access the cookie at path / from the url localhost:8080/audi/products . в любом случае, вы пытались установить время истечения срока действия и проверить его снова?

Ответ №2:

Сначала вы устанавливаете cookie:

 var myvalue = 100, 2000, 300;
$.cookie("mycookie", myvalue);
  

Затем вы получаете cookie:

 var getmycookie = $.cookie("mycookie");
    var myvalues = getmycookie.split(",");
    var firstval = myvalues[0];
    var secondval = myvalues[1];
    var thirdval = myvalues[2];
  

Не должно быть намного сложнее.
Если срок действия не указан, cookie удаляется по окончании сеанса, т.Е. при закрытии браузера.

РЕДАКТИРОВАТЬ: вы также можете указать путь:

 $.cookie("mycookie", myvalue, {
expires : 10,           //expires in 10 days

path    : '/products',          //The value of the path attribute of the cookie 
                       //(default: path of page that created the cookie).

domain  : 'http://localhost:8080',  //The value of the domain attribute of the cookie
                       //(default: domain of page that created the cookie).

secure  : true          //If set to true the secure attribute of the cookie
                       //will be set and the cookie transmission will
                       //require a secure protocol (defaults to false).
});
  

Я бы подумал, что что-то вроде этого подойдет:

 var myvalue = 100, 2000, 300;
$.cookie("mycookie", myvalue, {path : '/audi/products'});
  

О, и сеанс заканчивается при закрытии браузера, а не при выгрузке страницы, поэтому подойдет файл cookie сеанса.

Комментарии:

1. var getmycookie = $.cookie("mycookie"); возвращает null для меня при обращении с URL http://localhost:8080/audi/products -адреса, когда файл cookie был установлен с помощью http://localhost:8080/audi