--- title: Set-Cookie slug: Web/HTTP/Headers/Set-Cookie tags: - Cookies - HTTP - Referencia - Respuesta - encabezado - samesite translation_of: Web/HTTP/Headers/Set-Cookie ---
Tipo de cabecera | {{Glossary("Response header", "Respuesta del encabezado")}} |
---|---|
{{Glossary("Forbidden header name", "Nombre prohibido del encabezado")}} | no |
Set-Cookie: <cookie-name>=<cookie-value> Set-Cookie: <cookie-name>=<cookie-value>; Expires=<date> Set-Cookie: <cookie-name>=<cookie-value>; Max-Age=<non-zero-digit> Set-Cookie: <cookie-name>=<cookie-value>; Domain=<domain-value> Set-Cookie: <cookie-name>=<cookie-value>; Path=<path-value> Set-Cookie: <cookie-name>=<cookie-value>; Secure Set-Cookie: <cookie-name>=<cookie-value>; HttpOnly Set-Cookie: <cookie-name>=<cookie-value>; SameSite=Strict Set-Cookie: <cookie-name>=<cookie-value>; SameSite=Lax Set-Cookie: <cookie-name>=<cookie-value>; SameSite=None // Es posible usar múltiples directivas, por ejemplo: Set-Cookie: <cookie-name>=<cookie-value>; Domain=<domain-value>; Secure; HttpOnly
.ejemplo.com
) son ignorados..example.com
) are ignored.<cookie-name>=<cookie-value>
<cookie-name>
puede ser cualquier cosa excepto caracteres de control (CTLs) o espacios y tabulaciones. Tampoco debe contener caracteres de separación como los siguientes: ( ) < > @ , ; : \ " / [ ] ? = { }
.<cookie-value>
opcionalmente puede ser establecido dentro de comillas dobles y se permite usar cualquier caracter US-ASCII excluyendo CTLs, espacios en blanco, comillas dobles, comas, punto y coma y la barra invertida. Codificación: Muchas implementaciones realizan codificación de URL sobre los valores de la cookie, aunque esto no es requerido por la especificación RFC. Esto ayuda a satisfacer los requerimientos sobre los caracteres permitidos para <cookie-value>.Prefijo __Secure-
: Las cookies cuyo nombre comience por __Secure-
(los guiones forman parte del prefijo) deben ser establecidas con la bandera secure
y deben provenir de una página segura (HTTPS).Prefijo __Host-
: Las cookies cuyo nombre comience por __Host-
deben ser establecidas con la bandera secure
, provenir de una página segura (HTTPS), no deben tener especificado un dominio (y por tanto no son enviadas a subdominios) y la ruta debe ser "/".El tiempo de vida máximo útil de una cookie como marca HTTP-date timestamp. Ver {{HTTPHeader("Date")}} para el detalle del formato.
Si no está especificado, la cookie tendrá el tiempo de vida de una session cookie. Una sesión finaliza cuando el cliente lo culmina, esto quiere decir que la sesión será removida en ese punto.
Advertencia: Sin embargo, muchos navegadores web tiene una caracteristica llamada "restaurar" que almacenará todas tus pestañas para tenerlas lista cuando el navegador sea usado nuevamente. Las cookies de sesión tambien estarán presentes como si nunca se hubiera cerrado el navegador.
Max-Age=<non-zero-digit>
{{optional_inline}}Expires
y Max-Age
), Max-Age
tendrá mayor importancia.Domain=<domain-value>
{{optional_inline}}.example.com
) son ignorados.Path=<path-value>
{{optional_inline}}Cookie
./
) es interpretado como un separador de directorios y subdirectorios que serán también comparados: para Path=/docs
, /docs
, /docs/Web/
, y /docs/Web/HTTP
todos tendrán que coincidir.Secure
{{optional_inline}}https:
. (Sin embargo, información confidencial nunca debería ser almacenada en Cookies HTTP, como todo el mecanismo es However, confidential information should never be stored in HTTP Cookies, ya que todo el mecanismo es inherentemente inseguro y no encripta ninguna información.)
Nota: Sitios inseguros (http:
) no puenden almacenar directivas "seguras" apartir de Chrome 52+ y Firefox 52+.
HttpOnly
{{optional_inline}}SameSite=<samesite-value>
{{optional_inline}}Strict
Lax
None
Afirma que una cookie no debe ser enviada con peticiones cruzadas, proveiendo alguna protección contra ataques de falsificación de solicitudes cruzadas ({{Glossary("CSRF")}}).
Los navegadores haciendo migraciones para que el comportamiento por defecto de las cookies en lugar de default sea SameSite=Lax
. Si una cookie necesita ser enviada en peticiones cruzadas, se tiene que optar por no restringir el mismo sitio (SameSite) usando la directiva None
. La directiva None
requiere el atributo Secure
.
Las cookies de sesión son removidas cuando el cliente se apaga. Las cookies son cookies de sesión si no se especifican las directivas Expires
o Max-Age
.
Set-Cookie: sessionId=38afes7a8
En lugar de expirar cuando el cliente se cierra, las cookies permanentes expiran en una fecha especifica (Expires
) o después de una longitud de tiempo determinado (Max-Age
).
Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT
Set-Cookie: id=a3fWa; Max-Age=2592000
Una cookie para un dominio que no incluya el servidor que la defina debería ser rechazada por el agente de usuario.
La siguiente cookie sera rechazada si se define por el servidor ubicado en originalcompany.com
como:
Set-Cookie: qwerty=219ffwef9w0f; Domain=somecompany.co.uk
Una cookie para el subdomino del dominio actual será rechazada.
La siguiente cookie sera rechazada si el servidor anfitrión en example.com
la define como:
Set-Cookie: sessionId=e8bb43229de9; Domain=foo.example.com
Los nombres de las cookies prefijadas con __Secure-
o __Host-
pueden ser solo usadas si son definidas con la directiva secure
desde un origen (HTTPS) seguro.
Además, cookies con el prefijo __Host-
deben tener una ruta de /
(significando cualquier ruta del huésped) y no debe tener un atributo Domain
.
Para clientes que no implementan prefijos para las cookies, no se puede contar con que estas garantías adicionales, y las cookies prefijadas sean aceptadas.
// Ambas aceptadas al venir de un origen seguro (HTTPS) Set-Cookie: __Secure-ID=123; Secure; Domain=example.com Set-Cookie: __Host-ID=123; Secure; Path=/ // Rechazada por faltar la directiva Secure Set-Cookie: __Secure-id=1 // Rechazada por faltar la directiva Path=/ Set-Cookie: __Host-id=1; Secure // Rechazada por definir un dominio Set-Cookie: __Host-id=1; Secure; Path=/; domain=example.com
Especificación | Título |
---|---|
{{RFC("6265", "Set-Cookie", "4.1")}} | Mecanismo de gestión del estado HTTP |
draft-ietf-httpbis-rfc6265bis-05 | Cookie Prefixes, Same-Site Cookies, and Strict Secure Cookies |
{{Compat("http.headers.Set-Cookie", 5)}}
http:
) no pueden definirse cookies con la directiva 'secure'.