CGI::Application и cookies

| Нет комментариев

Работа с cookies и CGI::Application

Установка cookies

sub on_set_cookies {
	my $self = shift;
	my $query = $self->query();

	my $auth_cookie = $query->cookie( # подготавливаем cookie
			-name=>'alisa',
			-value=>'pass',
			-expires=>'+1h',
			-path=>'/cgi',
			-domain=>'.aninatalie.ru',
	);

	$self->header_props(-cookie=>[$auth_cookie]); # устанавливаем у клиента

	return $self->tt_process('template2.tt');
}



Получение информации из cookies

sub on_set_cookies {
	my $self = shift;
	my $query = $self->query();

	my $auth_cookie = $query->cookie('alisa');
		# Значение переменной $auth_cookie будет равно 'pass'. 
		# Т.е. мы получим только значение -value .

	...
	return $self->tt_process('template2.tt');
}


Обновление данных cookies

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

Удаление cookies

Удалить cookie тоже просто - обновляем значение нужной сookie и -expires присваиваем отрицательное значение, например, -1d. Браузер примет обновление сookie и, увидев отрицательное время, посчитает, что он давным давно уже должен был удалить сookie (в данном случае, еще вчера). И удалит.
sub on_set_cookies {
	my $self = shift;
	my $query = $self->query();

	my $auth_cookie = $query->cookie(
			-name=>'alisa',
			-value=>'pass',
			-expires=>'-1h',
			-path=>'/cgi',
			-domain=>'.aninatalie.ru',
	);

	$self->header_props(-cookie=>[$auth_cookie]);

	return $self->tt_process('template2.tt');
}


Памятка

Что такое cookies

Cookie является решением одной из наследственных проблем HTTP протокола (HyperText Transfer Protocol). Проблема заключается в непостоянстве соединения между клиентом и сервером.

Используя cookie, можно эмулировать сессию по HTTP протоколу. Коротко принцип эмуляции сессии таков: на первом запросе выдается соотвествующее значение cookie, а при каждом последующем запросе это значение читается из переменной окружения HTTP_COOKIE и соответствующим образом обрабатывается.

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

Некоторые cookie могут храниться только в течение одной сессии, они удаляются после закрытия браузера. Другие, установленные на определенный период времени, записываются в файл(ы).


Формат и синтаксис cookie

Сookie является частью HTTP заголовка. Полное описание поля Set-Cookie HTTP заголовка:
Set-Cookie: name=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; secure
Минимальное описание поля Set-Cookie HTTP заголовка:
Set-Cookie: name=VALUE;
  • name=VALUE - строка символов, исключая перевод строки, запятые и пробелы. NAME-имя cookie, VALUE - значение. Не допускается использование двоеточия, запятой и пробела.
  • expires=DATE - время хранения cookie, т.е. вместо DATE должна стоять дата в формате "expires=Monday, DD-Mon-YYYY HH:MM:SS GMT", после которой истекает время хранения cookie. Если этот атрибут не указан, то cookie хранится в течение одного сеанса, до закрытия броузера.
  • domain=DOMAIN_NAME - домен, для которого значение cookie действительно. Например, "domain=cit-forum.com". Если этот атрибут опущен, то по умолчанию используется доменное имя сервера, на котором было задано значение cookie.
  • path=PATH - атрибут устанавливает подмножество документов, для которых действительно значение cookie. Для того, чтобы cookie отсылались при каждом запросе к серверу, необходимо указать корневой каталог сервера, например, "path=/". Если этот атрибут не указан, то значение cookie распространяется только на документы в той же директории, что и документ, в котором было установлено значение cookie.
  • secure - если стоит этот маркер, то информация cookie пересылается только через HTTPS (HTTP с использованием SSL - Secure Socket Level), в защищенном режиме. Если этот маркер не указан, то информация пересылается обычным способом.
Что такое cookies и как с ними работать. Андрей А.Аликберов


Полезные ссылки

http://www.redantigua.com/cookies.html Cookies with CGI::Application
http://search.cpan.org/~markstos/CGI-Application-4.31/lib/CGI/Application.pm
http://search.cpan.org/~lds/CGI.pm-3.49/lib/CGI.pm#HTTP_COOKIES

Комментировать





Хостинг предоставлен RU-CENTER.
Регистрация доменов. Хостинг