русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Работа с Cookie в JavaScript

1 Назначение и структура Cookie

Cookie - это небольшие блоки текстовой информации, содержацие данные о клиенте, которые Web-сервер создает на компьютере клиента. По одной из версий это название произошло от английского слова cookie, означающего домашнее печенье, т.е. печенье, которое у каждой хозяйки имеет свои особенности.

Механизм Cookie был разработан компанией Netscape в качестве компенсации отсутствия реального сеанса работы между браузером и сервером в рамках протокола HTTP.

Согласно модели взаимодействия "клиент-сервер", которая выбрана для этого протокола, клиент и сервер устанавливают соединение только на момент обслуживания одного запроса клиента. Рассмотрим случай, когда для обращения к информационным ресурсам сервера требуется аутентификация пользователя. В локальной системе достаточно один раз ввести идентификатор и пароль, чтобы получить разрешение на работу. Интерфейс пользователя, который постоянно связан с системой доступа, обеспечивает сеанс, в рамках которого действует аутентификация.

При работе в Web сервер после ответа на запрос "забывает" о клиенте. Это означает, что аутентификацию нужно проходить каждый раз при обращении к ресурсу.

Первоначально выход из положения был найден в виде скрытых полей HTML-формы. Введенная при первом обращении информация передавалась клиентом и сервером друг другу при каждом обращении. Но этот подход неудобен тем, что постоянно нужно вызывать скрипт, который будет обрабатывать поля форм.

Решение было найдено в виде механизма Cookie. Суть его заключается в следующем: после обращения к серверу браузер в ответе сервера в заголовке HTTP-сообщения получает Cookie. Эти данные сохраняются браузером на своем магнитном диске и при следующем обращении к серверу передаются в заголовке HTTP-запроса без изменения.

В настройках броузера Cookie должны быть разрешены. Каждый файл Cookie не может превышать 4 КБ (иначе начальные записи удаляются, освобождая место новым), всего файлов может храниться до 400, причем, не больше 20 с одного сервера (иначе более старые файлы удаляются).

HTTP-заголовок, создающий Cookie, имеет следующий формат:
Set-Cookie: name=value [;expires=date] [;domain=domain_name][;path=some_path] [;secure][;httponly]>
Параметры заголовка Set-Cookie имеют следующее назначение:

  • name - имя набора Cookie;
  • value - значение Cookie. Если строка содержит знаки препинания, пробелы, переходы на новую строку и другие специальные символы, необходимо применить url-кодирование;
  • expires - указывает дату истечения срока хранения файла с Cookie. Если дата не указана - срок истекает после окончания сеанса работы с сервером. Дата задается в следующем формате (RFC 822, дополненный RFC 1123):
    DAY, DD MMM YYYY HH:MM:SS GMT,
    где:
    • DAY - не меньше трех букв английского названия для недели (Sun, Mon, Tue, Wen, Thu, Fri, Sat);
    • DD - номер дня месяца (1-31);
    • MMM - не меньше трех букв английского названия месяца (Jan, Feb, Mar, Apr, Maj, Jun, Yul, Aug, Sep, Oct, Nov, Dec);
    • YYYY - год;
    • HH - часы (0-23);
    • MM - минуты (0-59);
    • SS - секунды (0-59);
    • GMT - время должно быть указано по меридиану Гринвича;
  • domain - доменная часть адреса URL, для которого действует данный Cookie. Если этот параметр не указан, то по умолчанию используется доменный адрес URL документа HTML, где был установлен Cookie;
  • path - часть адреса URL, задающая путь к документу, для которого действует данный Cookie. Если этот параметр не указан, то по умолчанию используется доменный адрес URL документа HTML, где был установлен Cookie;
  • secure - если указано это поле, данные Cookie необходимо передавать только с использованием протокола SSL. Такой протокол используется серверами HTTPS;
  • httponly - означает, что данные, содержащиеся в Cookie, не могут быть получены с помощью функции WinINet InternetGetCookie() (для ОС Windows);

Когда запрашивается документ с сервера, браузер проверяет свои Cookie на предмет соответствия домену сервера и прочей информации. В случае, если найдены удовлетворяющие всем условиям Cookie, браузер посылает их серверу в виде HTTP-заголовка:

Cookie:nam1=value1;name2=value2...

В случае, когда Cookie принимает новое значение при имеющемся уже в браузере Cookie с совпадающими параметрами name, domain и path, старое значение заменяется новым. В остальных случаях добавляется новое Cookie.
Имеется несколько способов создания Cookie:

  • с помощью тэга <META>
  • с помощью JavaScript;
  • с помощью CGI-приложения;
  • с помощью функции InternetSetCookie() класса WinINet(для ОС Windos);

Рассмотрим первые два способа, доступные на стороне клиента.

2 Создание Cookie с помощью тэга <META>

Тэг <META> задает метатэги, которые используются для хранения информации, предназначенной для браузеров и поисковых систем. Например, механизмы поисковых систем обращаются к метатэгам для получения описания сайта, ключевых слов и других данных. Разрешается использовать более чем один метатэг, все они размещаются в контейнере заголовка <HEAD>.
Как правило, параметры любого метатэга сводятся к парам <имя=значение>, в которых имя задается с помощью ключевых слов NAME или HTTP-EQUIV, а значение - с помощью ключевого слова CONTENT.

Метатэги с параметром HTTP-EQUIV позволяют создавать HTTP-заголовки, при этом параметр HTTP-EQUIV задает имя, а параметр CONTENT - содержимое HTTP-заголовка.

Необходимо указать, что реальный HTTP-заголовок имеет приоритет перед HTTP-заголовком, заданным метатэгом.
В примере № 3 в соответствии с рассмотренным выше форматом HTTP-заголовка создается набор Cookie, в котором задается регистрационное имя пользователя (login) - "Петров" и запрашиваемые данные - "Программирование на JavaScript", срок действия которого истекает на Новый год.

Пример 3

<HTML>
<HEAD>
<TITLE>Создание Cookie с помощью тэга META</TITLE>
<META HTTP-EQUIV="Set-Cookie"
CONTENT="Петров=Программирование на JavaSript;
expires=Fri, 01 Jan 2011 00:00:00 GMT">
</HEAD>
<BODY STYLE="color:blue;font:6mm italic;text-align:center"> Набор Cookie создан
</BODY>
</HTML>


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

Например, если NAME="Robots", то параметр CONTENT может принимать такие значения:

  • index - разрешается индексирование страницы;
  • noindex - запрещается индексирование страницы;
  • follow - разрешается следовать по ссылкам страницы;
  • nofollow - запрещается следовать по ссылкам страницы.
  • all - равносильно index, follow (значение по умолчанию);
  • none - равносильно noindex, nofollow;

 

Смотрите также:

3 Создание Cookie с помощью JavaScript

4 Использование Cookie в JavaScript

Просмотров: 18306

Вы можете --> Заказать скрипт

Вернуться воглавление


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Полезен материал? Поделись:

Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.