Что такое печенье
«Cookie - это переменная, хранящаяся в компьютере посетителя. Этот файл cookie отправляется всякий раз, когда тот же компьютер запрашивает страницу через браузер. Вы можете использовать JavaScript для создания и извлечения значения cookie». - W3School
Cookie - это файл, созданный посещаемым веб -сайтом, и используется для хранения информации о просмотре, такой как информация о профиле.
С точки зрения JavaScript, файлы cookie являются некоторой информацией о строке. Эта информация хранится в компьютере клиента и используется для передачи информации между клиентским компьютером и сервером.
Эта информация может быть прочитана или установлена через Document.cookie в JavaScript. Поскольку файлы cookie в основном используются для общения между клиентом и сервером, в дополнение к JavaScript, язык сервера (например, PHP) также может получить доступ к файлам cookie.
Основы печенья
Куки имеют пределы размера. Данные, хранящиеся в каждом файле cookie, не могут превышать 4 КБ. Если длина строки cookie превышает 4 КБ, это свойство вернет пустую строку.
Поскольку файлы cookie в конечном итоге хранятся в клиентском компьютере в виде файлов, очень удобно просмотреть и изменять файлы cookie, поэтому часто говорят, что файлы cookie не могут хранить важную информацию.
Формат каждого файла cookie заключается в следующем: <имя печенья> = <значение>; И имя, и стоимость должны быть законными идентификаторами.
Файлы cookie действительны в течение периода времени. По умолчанию жизненный цикл печенья заканчивается, когда браузер закрывается. Если вы хотите, чтобы cookie имел возможность использовать после выключения браузера, вы должны установить период достоверности для cookie, который является датой истечения срока действия печенья.
Alert (typeof Document.cookie) Результатом является строка. Раньше я думал, что это был массив, и я шутил ...
Файлы cookie имеют концепцию домена и пути. Домен - это концепция домена. Поскольку браузер является средой, заботящейся о безопасности, разные домены не могут получить доступ к файлам cookie друг от друга (конечно, вы можете достичь кросс-доменного доступа через специальные настройки). Путь - это концепция маршрутизации. К файлам cookie, созданным веб -страницей, можно получить доступ только на всех веб -страницах в том же каталоге или подкаталоге, что и на этой веб -странице, но не может получить доступ к другим каталогам (это предложение немного сбивает с толку, через некоторое время его будет легко понять).
На самом деле, способ создания файлов cookie несколько похож на способ определения переменных, оба требуют использования имен печенья и значений cookie. Несколько файлов cookie могут быть созданы на одном и том же веб -сайте, а несколько файлов cookie можно хранить в одном и том же файле cookie.
FAQ FAQ
Есть два типа печенья:
Файлы cookie, установленные текущим веб -сайтом, который вы просматриваете
Сторонние файлы cookie из других источников доменов, таких как встраивание рекламы или изображений на веб-страницах (веб-сайт может отслеживать вашу информацию об использовании с помощью этих файлов cookie)
Основные знания только что упомянули проблему жизненного цикла печенья. На самом деле, файлы cookie могут быть примерно разделены на два состояния:
Временные файлы cookie. Во время текущего процесса использования веб -сайт будет хранить некоторую личную информацию, и информация будет удалена с компьютера после закрытия браузера.
Устанавливает печенье на время истечения срока действия. Даже если браузер отключен, информационная индустрия все еще будет в компьютере. Например, имя входа в систему и пароль, нет необходимости входить в систему каждый раз, когда вы переходите на определенный сайт. Это печенье можно хранить на компьютере в течение нескольких дней, месяцев или даже лет
Есть два способа очистить куки:
Чистые файлы cookie с помощью инструментов браузера (есть сторонние инструменты, и сам браузер также имеет эту функцию)
Очистить куки, установив период валидности файлов cookie
Примечание. Удаление файлов cookie может иногда привести к тому, что некоторые веб -страницы не выполняют должным образом функционировать
Браузеры могут принять и отрицать доступ к файлам cookie с помощью настройки.
По функциональным и производительным причинам рекомендуется минимизировать количество используемых файлов cookie и максимально использовать небольшие файлы cookie.
Подробная информация о кодировании cookie будет представлена отдельно в статье Advanced Cookie.
Если это страница на местном диске, Chrome Console не может использовать JavaScript для чтения и написания файлов cookie. Решение ... изменить браузер^_^.
Основное использование куки
1. Простые операции доступа
При доступе к файлам cookie с использованием JavaScript вы должны использовать атрибут cookie объекта документа; строка кода представляет, как создать и изменить файл cookie:
Кода -копия выглядит следующим образом:
document.cookie = 'username = darren';
В приведенном выше коде «Имя пользователя» представляет имя cookie, а «Даррен» представляет значение, соответствующее этому имени. Предполагая, что название cookie не существует, тогда создается новый файл cookie; Если он существует, значение, соответствующее имени cookie, изменяется. Если вы хотите создать файлы cookie несколько раз, просто используйте этот метод неоднократно.
2. Операция чтения cookie
На самом деле очень просто читать файлы cookie, то есть работать на строках. Скопируйте этот код на W3School, чтобы проанализировать:
Кода -копия выглядит следующим образом:
функция getCookie (c_name) {
if (document.cookie.length> 0) {// сначала проверьте, пустые ли cookie, если он пуст, вернуть ""
c_start = document.coukie.indexof (c_name + "=") // Проверьте, существует ли этот файл cookie через indexof () объекта строки. Если его не существует, это -1
if (c_start! =-1) {
C_START = C_START +C_NAME.Length +1 // Последний +1 фактически означает номер "=", так что начальное положение значения cookie было получено
c_end = document.cookie.indexof (";", c_start) // На самом деле, когда я увидел второй параметр indexof (), я внезапно стал немного головокружительным. Позже я вспомнил, что это указывает на указанную позицию начального индекса ... это предложение состоит в том, чтобы получить конечную позицию значения. Поскольку необходимо рассмотреть, является ли это последним пунктом, оно оценивается по ";"; »; число существует.
if (c_end ==-1) c_end = document.cookie.length
вернуть Unescape (document.cookie.substring (c_start, c_end)) // значение получается через substring (). Если вы хотите понять Unescape (), вы должны сначала знать, что делает Escape (). Все они очень важные основы. Если вы хотите знать, вы можете искать это. Детали кодирования cookie также будут объяснены в конце статьи.
}
}
возвращаться ""
}
Конечно, есть много способов реализации файлов cookie, таких как массивы, закономерности и т. Д., Поэтому я не буду вдаваться в подробности здесь.
3. Установите период валидности файлов cookie
Жизненный цикл печенья, который часто появляется в статьях, - это период достоверности и период истечения, то есть время, когда существуют файлы cookie. По умолчанию файлы cookie будут автоматически очищены при закрытии браузера, но мы можем установить период валидности файлов cookie через истечение. Синтаксис выглядит следующим образом:
Кода -копия выглядит следующим образом:
document.cookie = "name = value; xecires = date";
Значение даты в вышеуказанном коде представляет собой строку типа даты в формате GMT (Greenwich Time), а метод генерации выглядит следующим образом:
Кода -копия выглядит следующим образом:
var _date = new Date ();
_date.setDate (_date.getDate ()+30);
_date.togmtString ();
Вышеуказанные три строки кода разбиты на несколько шагов:
Генерировать экземпляр даты через новый, чтобы получить текущее время;
Метод getDate () получает день в текущем местном месяце, а затем добавляет 30, что означает, что я надеюсь, что это печенье может быть сохранено локально в течение 30 дней;
Затем установите время через метод setDate ();
Наконец, используйте метод togmtString () для преобразования объекта даты в строку и вернуть результат
Следующая полная функция иллюстрирует точки, на которые нам нужно обратить внимание при создании файлов cookie. Создайте функцию, которая хранит информацию в файле cookie:
Кода -копия выглядит следующим образом:
Функция setCookie (c_name, значение, истечь) {
var exdate = new Date ();
exdate.setDate (exdate.getDate () + истечь);
document.cookie = c_name + "=" + exck (значение) + ((срок действия == null)? "": "; истекает =" + exdate.togmtString ());
}
// Метод использования: setCookie ('username', 'darren', 30)
Теперь наша функция устанавливает достоверное время cookie в соответствии с количеством дней. Если вы хотите установить его в другие единицы (например, часы), тогда измените третью строку кода:
Кода -копия выглядит следующим образом:
exdate.sethours (exdate.gethours () + истечь);
Таким образом, период достоверности файлов cookie будет основан на часах.
В FAQ есть два способа очистить файлы cookie. Теперь мы хотим сказать, что файлы cookie недействительны путем установления периода достоверности до истекшего времени. Поскольку есть метод для установления даты истечения срока действия, пожалуйста, попросите заинтересованных друзей сделать это самостоятельно^_^. Давайте продолжим более глубокую тему печенья ниже.
Печенье продвинуто
One.cookie Path Concept
В основе есть упоминание о концепции файлов cookie, имеющих домены и пути. Теперь давайте представим роль путей в файлах cookie.
Файлы cookie обычно создаются, потому что пользователи получают доступ к странице, но этот файл cookie не доступен только на странице, где создается файл cookie.
По умолчанию можно получить только веб -страницы в том же каталоге или подкаталоге, что и на странице, которая создала файлы cookie. Это связано с соображениями безопасности, не все страницы могут получить доступ к файлам cookie, созданным другими страницами по желанию. Например:
Создайте cookie на странице "//www.vevb.com/darren_code/", затем страница под пути "/darren_code/" такого как: "//www.vevb.com/darren_code/archive/2011/11/07/cookie.html" может получить информацию по cookie по умолчанию.
По умолчанию, "//www.vevb.com" или "//www.vevb.com/xxxx/" не может получить доступ к этому cookie (бесполезно просто смотреть на нее, практиковать истину^_^).
Итак, как сделать этот файл cookie доступным для других каталогов или родительских каталогов, вы можете достичь его, установив путь cookie. Примеры следующие:
Кода -копия выглядит следующим образом:
document.cookie = "name = value; path = path"
document.cookie = "name = value; xecires = date; path = path"
Красный путь шрифта - это путь печенья. Наиболее распространенным примером является то, чтобы позволить файлу cookie быть в каталоге, чтобы независимо от того, какая подпада создается, можно получить доступ ко всем страницам:
Кода -копия выглядит следующим образом:
document.cookie = "name = darren; path =/";
Two.cookie Domain Concept
Путь может решить проблему доступа к файлам cookie под одной и той же доменом. Давайте продолжим говорить о проблеме доступа к файлам cookie между тем же доменом. Синтаксис выглядит следующим образом:
Кода -копия выглядит следующим образом:
document.cookie = "name = value; path = path; domain = domain";
Красный домен - это значение набора поля cookie.
Например, «www.qq.com» и «sports.qq.com» делятся связанным доменным именем «qq.com». Если мы хотим, чтобы Cookie под «Sports.qq.com» был доступен на www.qq.com », нам нужно использовать атрибут домена cookie и установить атрибут Path на«/». пример:
Кода -копия выглядит следующим образом:
document.cookie = "username = darren; path =/; domain = qq.com";
Примечание. Это определенно доступ между одним и тем же доменом, и значение домена не может быть установлено на доменное имя, которое не является основным доменом.
Три. Куки Безопасность
Обычно информация о файлах cookie используется для передачи данных с использованием HTTP -соединений. Этот метод доставки легко просмотреть, поэтому информация, хранящаяся в файлах cookie, легко украдена. Если содержание, доставленное в файлах cookie, более важно, то требуется зашифрованная передача данных.
Следовательно, название этого атрибута cookie «безопасно», а значение по умолчанию пустое. Если атрибут файла cookie безопасен, то передача данных передается между ним и сервером через HTTPS или другие протоколы безопасности. Синтаксис выглядит следующим образом:
Кода -копия выглядит следующим образом:
document.cookie = "username = darren; безопасное"
Настройка файлов cookie для обеспечения защиты только гарантирует, что процесс передачи данных между файлами cookie и сервером зашифрован, в то время как файл cookie, хранящийся локально, не шифруется. Если вы хотите, чтобы местные файлы cookie были зашифрованы, вы должны зашифровать свои данные самостоятельно.
Примечание. Даже если устанавливается надежный атрибут, это не означает, что другие не могут видеть информацию о файле cookie, сохраненную локально на вашей машине, поэтому, в конце концов, просто не ставите важную информацию о файлах cookie, ...
Четыре. Куки -кодирование деталей
Первоначально я хотел представить знания о кодировке cookie в разделе FAQ, потому что, если я не понимаю этого, проблема кодирования действительно является ловушкой, поэтому я расскажу об этом подробно.
При вводе информации о файлах cookie вы не можете включить специальные символы, такие как пространства, полуколоны, запятые и т. Д., И в целом хранилище информации об файле cookie не совсем поколо. Поэтому, прежде чем установить информацию о файле cookie, вы должны сначала использовать функцию Escape () для кодирования информации о значении cookie, а когда вы получаете значение cookie, используйте функцию Unescape () для преобразования значения обратно. Если установить файлы cookie:
Кода -копия выглядит следующим образом:
document.cookie = name + "=" + escape (value);
Давайте посмотрим на предложение в GetCookie (), упомянутое в основном использовании:
Кода -копия выглядит следующим образом:
return unescape (document.cookie.substring (c_start, c_end));
Таким образом, вам не нужно беспокоиться об ошибке информации о файлах cookie, потому что в значении Cookie появляется специальный символ.
Личный код
Кода -копия выглядит следующим образом:
/*Установить файлы cookie*/
Функция setCookie (c_name, значение, истечь, путь, домен, безопасный) {
var exdate = new Date (); // Получить текущее время
exdate.setDate (exdate.getDate () + истечь); // время истечения
document.cookie = c_name + "=" + // имя cookie
Escape (значение) + // Кодирование значения cookie
((Срок действия == null)? "": "; истекает =" + exdate.togmtString ()) + // Установить время истечения срока действия
((path == null)? '/': '; path =' + path) + // Установить путь доступа
((domain == null)? '': '; domain =' + domain) + // Установить домен доступа
((secure == null)? '': '; secure =' + secure); // установить, зашифровать или нет
};
setCookie ('test', 'name = sheng; sex = men; lancer = Dullaear', 30);
SetCookie ('bb', 'name = sheng; sex = men', 30);
/*Получить файлы cookie*/
функция getCookie (c_name, index) {
var cookies = document.cookie; // Получить ценность cookie
var cookielen = cookies.length; // Получить длину печенья
if (cookielen> 0) {// Когда cookie не пусто
var c_start = cookie.indexof (c_name + '='); // Найти серийный номер, необходимый для значения печенья в печенье
if (c_start> -1) {// Когда существует значение cookie
c_start + = c_name.length + 1; // Получите номер последовательности начала значения cookie
var c_end = cookies.indexof (';', c_start); // Получить номер конечной последовательности значения cookie
if (c_end == -1) {// Когда файл cookie является последним
c_end = cookielen; // Установить номер конечной последовательности значения печенья на длину печенья
};
var cookiest = unescape (cookies.substring (c_start, c_end)); // Получите значение декодированного печенья
var cookieObj = cookiestr.split (';'); // Разделитель значения cookie
index = ((index == null)? 0: index); // Судите, передается ли индекс в значение
var gootobj = cookieObj [index]; // Индексный массив
var oaltr = koverobj.split ('=');
var getCook = oaltr [1]; // Получить значение cookie, которое необходимо получить
вернуть GetCook;
};
} еще {
console.log («На странице нет файлов cookie»);
}
};
оповещение (getCookie ('test', 0)); // Печать запроса cookie