Atributos de cookies

Cuando un servidor web responde a una solicitud de un recurso, puede incluir un encabezado Set-Cookie junto con su respuesta. Ese encabezado le indica a tu navegador que almacene una cookie. Por ejemplo: Set-Cookie:cat=tabby. En ¿Qué son las cookies?, se explica cómo funcionan las cookies.

Además de proporcionar un nombre y un valor de cookie, Set-Cookie puede incluir atributos para controlar si se configuran las cookies y cuándo vencen. Los atributos de la cookie se separan con punto y coma. Por ejemplo:

    Set-Cookie:cat=tabby; Secure; HTTPOnly; Expires=Tue, 31 Dec 2999 23:59:59 GMT;

En este documento, se explican los atributos de cookies más importantes:

En Uso de cookies HTTP, se explican los atributos de las cookies con más detalle técnico.

Seguro

Si un encabezado Set-Cookie incluye Secure, la cookie solo se incluirá en las solicitudes encriptadas que usen el protocolo HTTPS: la cookie no se incluirá en las solicitudes HTTP. Esto puede ayudar a detener los ataques de intermediarios, en los que un atacante interviene de forma secreta en las comunicaciones entre el navegador y el servidor para transmitir información y, posiblemente, alterarla.

HTTPOnly

Si un encabezado Set-Cookie incluye HTTPOnly, JavaScript no puede acceder a la cookie, por ejemplo, con document.cookie. Esto ayuda a proteger contra ciertos tipos de ataques dirigidos a las cookies.

SameSite

Una solicitud de un recurso de un sitio diferente al que estás visitando es una solicitud de varios sitios. Una cookie establecida en respuesta a una solicitud de sitios cruzados es una cookie de terceros.

El atributo SameSite controla si se incluirá una cookie de terceros en una solicitud. Tiene tres valores posibles: Strict, Lax o None.

Obtén más información: ¿Qué son las cookies de terceros?

Estricto

La cookie solo se enviará en respuesta a las solicitudes de una página que se encuentre en el sitio de origen de la cookie. Por ejemplo, imagina que un usuario visita cats.example y tiene una cookie establecida con el atributo SameSite=Strict. Más tarde, el usuario está en un sitio diferente y sigue un vínculo a una página en cats.example. La cookie que se configuró no se incluirá en esa solicitud.

Lax

Esto funciona de la misma manera que Strict, excepto que el navegador también incluirá la cookie cuando el usuario siga un vínculo al sitio de origen de la cookie. (En el ejemplo anterior de Strict, la cookie se incluiría cuando el usuario siga el vínculo a cats.example). Lax es el valor predeterminado si no se incluye ningún atributo SameSite en un encabezado Set-Cookie.

Ninguno

Sin restricciones: La cookie se incluirá con una solicitud, ya sea entre sitios o no. Con SameSite=None, la cookie también debe tener el atributo Secure.

Particionada

Este atributo te permite habilitar el uso de una cookie en el almacenamiento particionado, con un "tarro de cookies" independiente por sitio de nivel superior. La cookie tiene dos claves, una para el sitio de nivel superior y otra para el dominio que la establece.

Por ejemplo, imagina que el sitio web A y el sitio web B incluyen un iframe del sitio web C. El iframe del sitio web A no puede acceder a un conjunto de cookies particionadas establecido por el iframe del sitio web B: la cookie AC es independiente de la cookie BC.

Diagrama que muestra que dos sitios web diferentes que incorporan un tercero común ya no compartirán cookies para ese tercero.
Con la partición de cookies, un servicio de terceros que establece una cookie cuando se incorpora en un sitio de nivel superior no puede acceder a esa misma cookie cuando el servicio se incorpora en otros sitios de nivel superior.

Las cookies con un atributo Partitioned se conocen como CHIPS: Cookies Having Independent Partitioned State (cookies con estado particionado independiente).

Las cookies particionadas deben tener el atributo Secure.

Obtén más información en Cookies Having Independent Partitioned State.

Vencimiento y Max-Age

Puedes especificar una fecha y hora de Expires, o un Max-Age en segundos, después de los cuales se debe borrar una cookie y ya no se debe enviar. Por ejemplo:

  • Set-Cookie:cat=tabby; Expires=Tue, 31 Dec 2999 23:59:59 GMT;
  • Set-Cookie:cat=tabby; Max-Age=86400

Si no especificas un atributo Max-Age o Expires, se borrará una cookie cuando finalice la sesión actual. Este tipo de cookie a veces se conoce como cookie de sesión.

Dominio

Si un encabezado Set-Cookie tiene un atributo Domain, la cookie se incluirá en las solicitudes al dominio especificado y a cualquiera de sus subdominios.

Si un encabezado Set-Cookie no tiene un atributo Domain, la cookie no se incluirá en las solicitudes a subdominios.

En otras palabras, incluir el atributo Domain reduce las restricciones de dominio.

Por ejemplo, con una respuesta del sitio web cats.example:

  • Set-Cookie:cat=tabby
    La cookie solo se incluirá en las solicitudes a cats.example.
  • Set-Cookie:cat=tabby; Domain=cats.example
    La cookie se incluirá en las solicitudes a cats.example y en cualquier solicitud de recursos en subdominios como fluffy.cats.example o user.assets.cats.example.

Ruta

Si se incluye un atributo Path en un encabezado de respuesta Set-Cookie, la cookie que se establece solo se incluirá en las solicitudes a URLs (en el sitio que estableció la cookie) que coincidan con el valor de Path.

Por ejemplo:

  • Set-Cookie:cat=tabby; Path=/articles
    La cookie se incluirá en una solicitud a cualquier ruta de URL que comience con /articles:
    https://cats.example/articles/tabby/index.html
    https://cats.example/articles/breeds/tabby/index.html
    https://cats.example/images/tabby.jpg
    https://cats.example/en/articles/tabby/index.html
  • Set-Cookie:cat=tabby; Path=/
    Todas las solicitudes a cualquier URL del sitio incluirán la cookie.

Si un encabezado de respuesta Set-Cookie no tiene un valor Path, la cookie solo se incluirá en las solicitudes al mismo directorio. Por ejemplo, imagina que se establece una cookie cat=tabby en respuesta a una solicitud de cats.example/images/tabby.jpg.. Si no se establece ningún Path, la cookie solo se incluirá con las solicitudes de archivos dentro del directorio cats.example/images.

Demostraciones

Herramientas

Más información