Cookie в Ruby CGI

Протокол HTTP — это протокол без сохранения состояния. Но коммерческому веб-сайту необходимо поддерживать информацию о сессии между разными страницами.

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

В этом случае Cookies помогают нам очень хорошо решить проблему.


Как работают Cookies?

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

Запись и чтение

Коллекция Cookies — это коллекция данных, прикреплённая к объекту Response и объекту Request. При использовании нужно указывать перед ней префикс Response или Request.

Синтаксис, используемый для отправки Cookies клиенту, обычно выглядит так:

При установке коллекции Cookies, которой не существует, она создаётся на клиентской машине. Если коллекция Cookies уже существует, она будет заменена. Поскольку Cookies отправляются клиенту как часть информации заголовка HTTP-передачи, код отправки Cookies клиенту обычно размещается перед тегом `<HTML>` HTML-файла, отправляемого в браузер.

Если пользователь хочет прочитать Cookies, он должен использовать коллекцию Cookies объекта Request. Использование: Обратите внимание, что браузер может обмениваться данными коллекции Cookies с сервером только до того, как сервер загрузит какие-либо данные в браузер. Как только браузер начнёт получать данные, загруженные сервером, обмен данными Cookies прекращается. Чтобы избежать ошибок, добавьте `response.Buffer=True` перед программой и тегом `<HTML>`.

Свойства коллекции

  • 1. Свойство Expires:Это свойство используется для установки периода для Cookies. В течение этого периода, пока веб-страница открыта, можно обратиться к сохранённым Cookies. Если этот период превышен, Cookies автоматически удаляются. Например: установите срок действия Cookies до 1 апреля 2004 года, и тогда они будут автоматически удалены. Если для Cookie не установлен срок действия, его жизненный цикл начинается при открытии браузера и заканчивается при закрытии браузера. После каждого запуска жизненный цикл заканчивается, а следующий запуск начинается заново.
  • 2. Свойство Domain:Это свойство определяет уникальность данных, передаваемых Cookies. Если вы хотите отправлять Cookie только на главную страницу Sohu, можно использовать следующий код:
  • 3. Свойство Path:Оно определяет, что Cookies отправляются только в запросах к указанному пути. Если свойство Path не задано, используется путь приложения по умолчанию.
  • 4. Свойство Secure:Указывает, могут ли Cookies быть прочитаны пользователем.
  • 5、Name=Value : Cookies задаются и извлекаются в виде пар ключ-значение.

Работа с Cookies в Ruby

Вы можете создать объект с именем cookie, сохранить текстовую информацию, отправить эту информацию в браузер и вызвать CGI.out для установки заголовка cookie:

Пример

#!/usr/bin/ruby require "cgi" cgi = CGI.new("html4") cookie = CGI::Cookie.new('name' => 'mycookie', 'value' => 'Zara Ali', 'expires' => Time.now + 3600) cgi.out('cookie' => cookie) do cgi.head + cgi.body { "Cookie сохранён" } end

Затем мы возвращаемся на эту страницу и ищем значение cookie, как показано ниже:

Пример

#!/usr/bin/ruby require "cgi" cgi = CGI.new("html4") cookie = cgi.cookies['mycookie'] cgi.out('cookie' => cookie) do cgi.head + cgi.body { cookie[0] } end

Когда объект CGI::Cookie создаётся, он содержит следующие параметры:

Параметр Описание
name Указывает имя cookie.
value Указывает значение cookie.
expire Указывает срок действия cookie.
path Указывает серверный путь cookie.
domain Указывает домен cookie.
secure Указывает, передаётся ли cookie через защищённое соединение HTTPS.
Другие расширения