Ruby - Cookies CGI

El protocolo HTTP es un protocolo sin estado. Pero para un sitio web comercial, se requiere mantener la información de la sesión entre diferentes páginas. Por ejemplo, el registro de un usuario finaliza después de completar muchas páginas. Pero cómo mantener la información de la sesión del usuario en todas las páginas web.

En muchas situaciones, el uso de cookies es el método más eficiente para recordar y rastrear preferencias, compras, comisiones y otra información requerida para una mejor experiencia del visitante o estadísticas del sitio.

¿Cómo funciona?

Su servidor envía algunos datos al navegador del visitante en forma de cookie. El navegador puede aceptar la cookie. Si es así, se almacena como un registro de texto sin formato en el disco duro del visitante. Ahora, cuando el visitante llega a otra página de su sitio, la cookie está disponible para su recuperación. Una vez recuperado, su servidor sabe / recuerda lo que se almacenó.

Las cookies son un registro de datos de texto sin formato de cinco campos de longitud variable:

  • Expires- La fecha de caducidad de la cookie. Si está en blanco, la cookie caducará cuando el visitante salga del navegador.

  • Domain - El nombre de dominio de su sitio.

  • Path- La ruta al directorio o página web que establece la cookie. Esto puede estar en blanco si desea recuperar la cookie de cualquier directorio o página.

  • Secure- Si este campo contiene la palabra "seguro", la cookie solo se puede recuperar con un servidor seguro. Si este campo está en blanco, no existe tal restricción.

  • Name = Value - Las cookies se configuran y recuperan en forma de pares de clave y valor.

Manejo de cookies en Ruby

Puede crear un objeto de cookie con nombre y almacenar cualquier información textual en él. Para enviarlo al navegador, configure uncookieencabezado en la llamada a CGI.out .

#!/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 stored" }
end

La próxima vez que el usuario regrese a esta página, puede recuperar los valores de cookies establecidos como se muestra a continuación:

#!/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

Las cookies se representan mediante un objeto separado de clase CGI :: Cookie, que contiene los siguientes accesos:

Atributo Valor devuelto
nombre Nombre de la cookie
valor Una matriz de valores de cookies
camino El camino de la cookie
dominio El dominio
expira El tiempo de vencimiento (como objeto Time)
seguro Verdadero si es una cookie segura