Compartir a través de


HTTP Cookies

Las cookies HTTP proporcionan al servidor un mecanismo para almacenar y recuperar información de estado en el sistema de la aplicación cliente. Este mecanismo permite a las aplicaciones web almacenar información sobre los elementos seleccionados, las preferencias del usuario, la información de registro y otros datos que pueden recuperarse posteriormente.

Hay dos cabeceras, Set-Cookie y Cookie, que están relacionadas con las cookies. La cabecera Set-Cookie es enviada por el servidor en respuesta a una petición HTTP, que se utiliza para crear una cookie en el sistema del usuario. El encabezado Cookie es incluido por la aplicación cliente con una petición HTTP enviada a un servidor, si existe una cookie que tenga un dominio y ruta coincidentes.

La cabecera de respuesta Set-Cookie utiliza el siguiente formato:

Set-Cookie: <name>=<value>[; <name>=<value>]...
[; expires=<date>][; domain=<domain_name>]
[; path=<some_path>][; secure][; httponly]

Una o varias secuencias de cadenas (separadas por punto y coma) que siguen el patrón nombre= valor debe incluirse en la cabecera de respuesta Set-Cookie. El servidor puede utilizar estas secuencias de cadenas para almacenar datos en el sistema del cliente.

La fecha de expiración se fija utilizando el formato expira=fecha, donde fecha es la fecha de expiración en el meridiano de Greenwich (GMT). Si no se establece la fecha de caducidad, la cookie caduca una vez finalizada la sesión de Internet. En caso contrario, la cookie se mantiene en la caché hasta la fecha de caducidad. La fecha debe tener el siguiente formato:

DÍA, DD-MMM-YYYY HH:MM:SS GMT

DAY

El día de la semana (dom, lun, mar, mié, jue, vie, sáb).

DD

El día del mes (por ejemplo, 01 para el primer día del mes).

MMM

La abreviatura de tres letras del mes (ene, feb, mar, abr, may, jun, jul, ago, sep, oct, nov, dic).

YYYY

El año.

HH

El valor de la hora en hora militar (22 serían las 22:00, por ejemplo).

MM

El valor por minuto.

SS

Segundo valor.

Especificación del nombre de dominio, utilizando el patrón dominio=domain_name, es opcional para las cookies persistentes y se utiliza para indicar el final del dominio para el que la cookie es válida. Las cookies de sesión que especifican un dominio son rechazadas. Si la terminación del nombre de dominio especificado coincide con la solicitud, la cookie intenta hacer coincidir la ruta para determinar si se debe enviar la cookie. Por ejemplo, si la terminación del nombre de dominio es .microsoft.com, las peticiones a home.microsoft.com y support.microsoft.com se comprobarían para ver si el patrón especificado coincide con la petición. El nombre de dominio debe contener al menos dos o tres puntos para evitar que se instalen cookies para terminaciones de dominio muy utilizadas, como .com, .edu y co.jp. Los nombres de dominio permitidos serían similares a .microsoft.com, .someschool.edu y .someserver.co.jp. Solo los hosts dentro del dominio especificado pueden establecer una cookie para un dominio.

Especificación de la ruta, utilizando la ruta=domain_name, es opcional y puede utilizarse para especificar un subconjunto de URLs para las que la cookie es válida. Si se especifica una ruta, la cookie se considera válida para cualquier solicitud que coincida con esa ruta. Por ejemplo, si la ruta especificada es /ejemplo, las peticiones con las rutas /ejemplo.código y /ejemplo/código.htm coincidirían. Si no se especifica ninguna ruta, se asume que la ruta es la del recurso asociado a la cabecera Set-Cookie.

La cookie también se puede marcar como segura, lo que especifica que la cookie solo se puede enviar a servidores https.

Finalmente, una cookie puede ser marcada como HttpOnly (los atributos no distinguen mayúsculas de minúsculas), para indicar que la cookie no es secuenciable y no debe ser revelada a la aplicación cliente, por razones de seguridad. Dentro de Windows Internet, esto significa que la cookie no se puede recuperar a través de la aplicación InternetGetCookie función.

El encabezado Cookie se incluye con cualquier petición HTTP que tenga una cookie cuyo dominio y ruta coincidan con la petición. El encabezado Cookie tiene el siguiente formato:

Cookie: <name>=<value> [;<name>=<value>]...

Una o varias secuencias de cadenas usando el formato nombre= valor, contienen la información que se estableció en la cookie.

Generar cookies

Existen tres métodos para generar cookies para Microsoft Internet Explorer: utilizando Microsoft JScript, utilizando las funciones de WinINet y utilizando un script CGI. Todos los métodos necesitan establecer la información que se incluye en la cabecera Set-Cookie.

Utilizando el modelo de objetos de HTML dinámico (DHTML), las cookies pueden establecerse llamando a la cookie propiedad del objeto documento, como se muestra en el siguiente ejemplo.

<SCRIPT language="JavaScript">
<!--
    document.cookie = "SomeValueName = Some_Value";
-->
</SCRIPT>

Las cookies pueden ser creadas por aplicaciones que utilicen la InternetSetCookie función. Para obtener más información, consulte Establecer una Cookie.

Las cookies se generan incluyendo una cabecera Set-Cookie como parte de un script CGI incluido en la respuesta HTTP a una petición.

El siguiente ejemplo es un script CGI que incluye una cabecera Set-Cookie utilizando Perl.

print "Set-Cookie:Test=test_value; 
      expires=Sat, 01-Jan-2000 00:00:00 GMT;
      path=/;"

Nota:

WinINet no admite implementaciones de servidor. Además, no debe utilizarse desde un servicio. Para implantaciones o servicios de servidor, utilice Microsoft Windows HTTP Servicios (WinHTTP).