Файлы cookie хранятся в файле document.cookie для конкретного документа? - PullRequest
2 голосов
/ 17 августа 2010

Я обрабатываю файлы cookie, используя JavaScript для хранения некоторых значений в моем веб-приложении asp.net. Я использую document.cookie, чтобы сохранить некоторые значения (преобразованные в длинную строку). Но я хочу, чтобы это значение было доступно на всех страницах моего приложения.

Когда я пытаюсь получить это значение с другой страницы, я получаю значения, относящиеся к документу, в текущем URL.

Короче говоря, я сохраняю значение в файле cookie в http://myapp/doc1.aspx и хочу получить его в http://myapp/doc2.aspx

Значит, document.cookie относится к одной области видимости документа? Как мне сохранить / прочитать файлы cookie на сайте?

Обновление

Вот так я получаю и устанавливаю куки

function getCookie(c_name)
{
try{
  if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    }
  }
  }
  catch(e)
  {}
return "";
}

function setCookie ( name, value, exp_d) 
{
  var cookie_string = name + "=" + escape ( value );

  if ( exp_d )
  {
    var exdate=new Date();
    var expires = new Date ( exdate.getYear(), exdate.getMonth(), exdate.getDay()+exp_d );
    cookie_string += "; expires=" + expires.toGMTString();
  }

  document.cookie = cookie_string;
}

Но я получаю разные значения для файлов cookie на разных страницах. Есть идеи?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 17 августа 2010

Cookies имеют домен и путь. По умолчанию домен будет доменом, из которого он установлен, а путь будет корневым путем, но они могут быть переопределены следующим образом:

Ресурс на http://www.example.net/foo/bar/baz устанавливает cookie (либо с сервера, либо с клиентского JavaScript).

По умолчанию его домен - www.example.net, а путь - /, поэтому он будет виден всем ресурсам, чей URI соответствует : //www.example.net/, где * - простой подстановочный знак .

Его домен может быть установлен на example.net, но не может быть установлен на example.org - он может быть установлен только на домен, к которому относится поддомен. (Существуют специальные и несовершенные правила, запрещающие вам устанавливать cookie для tld, подобных .net)

Его путь может быть установлен на / foo / bar / baz или / foo / bar или даже на / foo / ba по сравнению с простым сопоставлением подстрок. Если установлено, например, / foo / bar / тогда он будет виден ресурсу на http://www.example.net/foo/bar/qux, но не на ресурсе http://www.example.net/foo/quux/corge

Существует также защищенный proprty, который ограничивает использование cookie протоколом HTTPS.


Редактировать: Подробнее о том, как на самом деле установить эти свойства, см. http://www.quirksmode.org/js/cookies.html.

2 голосов
/ 30 июня 2012

Проблема может быть решена с помощью приведенного ниже синтаксиса

use ";path=/;" при сохранении файлов cookie, как показано ниже

document.cookie = c_name + "=" + oldInfo + ";path=/";
1 голос
/ 17 августа 2010

Cookies применяются ко всему доменному имени.Файлы cookie, созданные с использованием кода, который вы разместили, будут доступны для любой страницы, размещенной на вашем доменном имени.

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