Ya no tienes que indagar más por todo internet ya que has llegado al lugar exacto, contamos con la solución que buscas pero sin problemas.
los Set-Cookie
El encabezado de respuesta HTTP se usa para enviar una cookie desde el servidor al agente de usuario, por lo que el agente de usuario puede enviarla de vuelta al servidor más tarde. Para enviar múltiples cookies, múltiples Set-Cookie
los encabezados deben enviarse en la misma respuesta.
Los navegadores impiden que el código JavaScript frontend acceda al Set Cookie
encabezado, como lo requiere la especificación Fetch, que define Set-Cookie
como un nombre de encabezado de respuesta prohibido ese debe ser filtrado de cualquier respuesta expuesta al código frontend.
Para obtener más información, consulte la guía sobre cookies HTTP.
Tipo de encabezado | Encabezado de respuesta |
---|---|
Nombre de encabezado prohibido | no |
Nombre de encabezado de respuesta prohibido | sí |
Sintaxis
Set-Cookie:= Set-Cookie: = ; Expires= Set-Cookie: = ; Max-Age= Set-Cookie: = ; Domain= Set-Cookie: = ; Path= Set-Cookie: = ; Secure Set-Cookie: = ; HttpOnly Set-Cookie: = ; SameSite=Strict Set-Cookie: = ; SameSite=Lax Set-Cookie: = ; SameSite=None // Multiple attributes are also possible, for example: Set-Cookie: = ; Domain= ; Secure; HttpOnly
Atributos
= - Una cookie comienza con un par nombre-valor:
- A
puede ser cualquier carácter US-ASCII, excepto caracteres de control, espacios o tabulaciones. Tampoco debe contener un carácter separador como el siguiente:( ) < > @ , ; : " / [ ] ? =
. - A
opcionalmente, se puede envolver entre comillas dobles e incluir cualquier carácter US-ASCII excluyendo los caracteres de control, Espacio en blanco, comillas dobles, coma, punto y coma y barra invertida. Codificación: Muchas implementaciones realizan la codificación de URL en los valores de las cookies, sin embargo, no es necesario según la especificación RFC. Ayuda a satisfacer los requisitos sobre qué caracteres están permitidos paraaunque. __Secure-
: Nombres de cookies que comienzan con__Secure-
(el guión es parte del prefijo) debe establecerse con elsecure
bandera desde una página segura (HTTPS).__Host-
: Cookies con nombres que comienzan con__Host-
debe configurarse con elsecure
bandera, debe ser de una página segura (HTTPS), no debe tener un dominio especificado (y por lo tanto no se envían a subdominios) y la ruta debe ser/
.
- A
Expires=
Opcional-
La vida útil máxima de la cookie como una marca de tiempo de fecha HTTP. Ver
Date
para el formato requerido.Si no se especifica, la cookie se convierte en un cookie de sesión. Una sesión finaliza cuando el cliente se apaga y las cookies de sesión se eliminarán.
Advertencia: Muchos navegadores web tienen restaurar sesión función que guardará todas las pestañas y las restaurará la próxima vez que se utilice el navegador. Las cookies de sesión también se restaurarán, como si el navegador nunca se cerrara.
Cuando se establece una fecha de Caducidad, la fecha límite es relativa a la cliente se está configurando la cookie, no el servidor.
Max-Age=
Opcional- Número de segundos hasta que caduca la cookie. Un número cero o negativo caducará la cookie inmediatamente. Si ambos
Expires
yMax-Age
se establecen,Max-Age
tiene precedencia. Domain=
Opcional- Host al que se enviará la cookie.
- Si se omite, el valor predeterminado es el host de la URL del documento actual, sin incluir los subdominios.
- Contrariamente a las especificaciones anteriores, los puntos iniciales en los nombres de dominio (
.example.com
) se ignoran. - Múltiples valores de dominio / host son no permitido, pero si un dominio es especificado, los subdominios siempre se incluyen.
Path=
Opcional- Una ruta que debe existir en la URL solicitada, o el navegador no enviará la
Cookie
encabezamiento. - La barra inclinada (
/
) se interpreta como un separador de directorio, y los subdirectorios también coincidirán: paraPath=/docs
,/docs
,/docs/Web/
, y/docs/Web/HTTP
todo coincidirá. Secure
Opcional- La cookie solo se envía al servidor cuando se realiza una solicitud con el
https:
esquema (excepto en localhost), y por lo tanto es más resistente a hombre en el medio ataques.Nota: No asumas que
Secure
evita todo acceso a información sensible en las cookies (claves de sesión, detalles de inicio de sesión, etc.). Las cookies con este atributo aún se pueden leer / modificar con acceso al disco duro del cliente, o desde JavaScript si elHttpOnly
el atributo de cookie no está establecido.Nota: Sitios inseguros (
http:
) no puede configurar cookies con elSecure
atributo (desde Chrome 52 y Firefox 52). Para Firefox, elhttps:
los requisitos se ignoran cuando elSecure
El atributo lo establece localhost (desde Firefox 75). HttpOnly
Opcional- Prohíbe que JavaScript acceda a la cookie, por ejemplo, a través del
Document.cookie
propiedad. Tenga en cuenta que una cookie que se ha creado con HttpOnly aún se enviará con solicitudes iniciadas por JavaScript, por ejemplo, al llamarXMLHttpRequest.send()
ofetch()
. Esto mitiga los ataques contra las secuencias de comandos entre sitios (XSS). SameSite=
Opcional-
Strict
: El navegador envía la cookie solo para solicitudes del mismo sitio (es decir, solicitudes que se originan en el mismo sitio que instaló la cookie). Si la solicitud se originó en una URL diferente a la actual, no hay cookies con laSameSite=Strict
se envían atributos.Lax
: La cookie se retiene en las subconsultas entre sitios, como las llamadas para cargar imágenes o marcos, pero se envía cuando un usuario navega a la URL desde un sitio externo, por ejemplo, siguiendo un enlace.None
: El navegador envía la cookie con solicitudes entre sitios y del mismo sitio.
Afirma que una cookie no debe enviarse con solicitudes de origen cruzado, lo que proporciona cierta protección contra ataques de falsificación de solicitudes entre sitios (CSRF).
Los navegadores están migrando para tener cookies por defecto a
SameSite=Lax
. Si es necesario enviar una cookie de origen cruzado, opte por no recibirSameSite
restricción usando elNone
valor. losNone
el valor requiere elSecure
atributo.
Ejemplos de
Cookie de sesión
Cookies de sesión se eliminan cuando el cliente se apaga. Las cookies son cookies de sesión si no especifican el Expires
o Max-Age
atributos.
Set-Cookie: sessionId=38afes7a8
Cookie permanente
En lugar de caducar cuando el cliente está cerrado, cookies permanentes expiran en una fecha específica (Expires
) o después de un período de tiempo específico (Max-Age
).
Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT
Set-Cookie: id=a3fWa; Max-Age=2592000
Dominios inválidos
Una cookie para un dominio que no incluye el servidor que lo configuró. debe ser rechazado por el agente de usuario.
La siguiente cookie será rechazada si la configura un servidor alojado en originalcompany.com
:
Set-Cookie: qwerty=219ffwef9w0f; Domain=somecompany.co.uk
Se rechazará una cookie para un subdominio del dominio de servicio.
La siguiente cookie será rechazada si la configura un servidor alojado en example.com
:
Set-Cookie: sessionId=e8bb43229de9; Domain=foo.example.com
Prefijos de cookies
Nombres de cookies con el prefijo __Secure-
o __Host-
sólo se pueden utilizar si se configuran con el secure
atributo de un origen seguro (HTTPS).
Además, las cookies con la __Host-
el prefijo debe tener una ruta de /
(es decir, cualquier ruta en el host) y no debe tener un Domain
atributo.
Para los clientes que no implementan prefijos de cookies, no puede contar con estas garantías adicionales, y las cookies con prefijos siempre serán aceptadas.
// Both accepted when from a secure origin (HTTPS) Set-Cookie: __Secure-ID=123; Secure; Domain=example.com Set-Cookie: __Host-ID=123; Secure; Path=/ // Rejected due to missing Secure attribute Set-Cookie: __Secure-id=1 // Rejected due to the missing Path=/ attribute Set-Cookie: __Host-id=1; Secure // Rejected due to setting a Domain Set-Cookie: __Host-id=1; Secure; Path=/; Domain=example.com
Especificaciones
Especificación | Título |
---|---|
RFC 6265, sección 4.1: Establecer cookies | Mecanismo de gestión de estado HTTP |
borrador-ietf-httpbis-rfc6265bis-05 | Prefijos de cookies, cookies del mismo sitio y cookies estrictamente seguras |
Compatibilidad del navegadorActualizar datos de compatibilidad en GitHub
Escritorio | ||||||
---|---|---|---|---|---|---|
Cromo | Borde | Firefox | explorador de Internet | Ópera | Safari | |
Set-Cookie |
sí | 12 | sí | sí | sí | sí |
HttpOnly |
1 | 12 | 3 | 9 | 11 | 5 |
Max-Age |
sí | 12 | sí | 8 | sí | sí |
SameSite |
51 | dieciséis | 60 | No | 39 | 13
|
SameSite : SameSite=Lax |
51 | dieciséis | 60 | No | 39 | 12 |
SameSite : Predeterminado en Lax |
80 | 80 | 69Discapacitado
|
No | 67 | No |
SameSite : SameSite=None |
51 | dieciséis | 60 | No | 39 | 13
|
SameSite : SameSite=Strict |
51 | dieciséis | 60 | No | 39 | 12 |
SameSite : Se requiere un contexto seguro |
80 | 80 | 69 Discapacitado
|
No | 67 | No |
Prefijos de cookies | 49 | 79 | 50 | No | 36 | sí |
Móvil | ||||||
---|---|---|---|---|---|---|
Vista web de Android | Chrome para Android | Firefox para Android | Opera para Android | Safari en iOS | Internet de Samsung | |
Set-Cookie |
sí | sí | sí | sí | sí | sí |
HttpOnly |
37 | sí | 4 | sí | 4 | sí |
Max-Age |
sí | sí | sí | sí | sí | sí |
SameSite |
51 | 51 | 60 | 41 | 13
|
5,0 |
SameSite : SameSite=Lax |
51 | 51 | 60 | 41 | 12,2 | 5,0 |
SameSite : Predeterminado en Lax |
80 | 80 | No | No | No | No |
SameSite : SameSite=None |
51 | 51 | 60 | 41 | 13 | 5,0 |
SameSite : SameSite=Strict |
51 | 51 | 60 | 41 | 12,2 | 5,0 |
SameSite : Se requiere un contexto seguro |
80 | 80 | No | No | No | No |
Prefijos de cookies | 49 | 49 | 50 | 36 | sí | 5,0 |
Notas de compatibilidad
- A partir de Chrome 52 y Firefox 52, los sitios inseguros (
http:
) no puede configurar cookies con elSecure
atributo más.
Ver también
- Cookies HTTP
Cookie
Document.cookie
© 2005–2020 Mozilla y colaboradores individuales.
Con licencia de Creative Commons Attribution-ShareAlike License v2.5 o posterior.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie
Sección de Reseñas y Valoraciones
Te invitamos a auxiliar nuestro quehacer poniendo un comentario y dejando una valoración te estamos agradecidos.