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.

Además de proporcionar un nombre y un valor de cookie, Set-Cookie puede incluir atributos para controlar si se establecen las cookies y cuándo vencen. Los atributos de las cookies 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á con 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 en secreto en las comunicaciones entre el navegador y el servidor para transmitir información y, potencialmente, 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 que se dirigen a las cookies.

SameSite

Una solicitud de un recurso de un sitio diferente del que estás visitando es una solicitud entre sitios. Una cookie establecida en respuesta a una solicitud entre sitios 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.

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 estableció 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 una cookie para el almacenamiento particionado, con un "frasco de cookies" separado por sitio de nivel superior. La cookie tiene dos claves, por el sitio de nivel superior y por 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 una cookie particionada establecida por el iframe en el sitio web B: la cookie AC está separada 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 con estado particionado independiente.

Las cookies particionadas deben tener el atributo Secure.

Más información: Cookies con estado particionado independiente.

Vence en y Max-Age

Puedes especificar una fecha y hora de Expires o un Max-Age en segundos, después de lo cual 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á con 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á con las solicitudes a los 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á con las solicitudes a cats.example
  • Set-Cookie:cat=tabby; Domain=cats.example
    La cookie se incluirá con las solicitudes a cats.example y también con cualquier solicitud de recursos en subdominios como fluffy.cats.example o user.assets.cats.example.

Ruta de acceso

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

Por ejemplo:

  • Set-Cookie:cat=tabby; Path=/articles
    La cookie se incluirá para 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á con 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 Path, la cookie solo se incluirá con las solicitudes de archivos dentro del directorio cats.example/images.

Demostraciones

Herramientas

Más información