Cookies y SameSite + Secure - ExpressJS


8

La siguiente advertencia se muestra en la consola, aunque tengo la siguiente configuración en mi aplicación express. ¿Alguien ha visto este error antes? Mi búsqueda me trajo a https://github.com/expressjs/express/issues/3095

También estoy usando express: 4.17.1

let COOKIE_OPTIONS = { httpOnly: true, sameSite: 'None', secure: true };
A cookie associated with a cross-site resource at http://MYURL.URL was set
without the `SameSite` attribute. A future release of Chrome will only deliver 
cookies with cross-site requests if they are set with `SameSite=None` and 
`Secure`. You can review cookies in developer tools under 
Application>Storage>Cookies and see more details at 
https://www.chromestatus.com/feature/5088147346030592 and 
https://www.chromestatus.com/feature/5633521622188032.

Al hacer una solicitud con Insomia (Cartero) veo lo siguiente

access_token=someToken; 
Path=/; 
HttpOnly; 
Secure; 
SameSite=None

El problema podría estar relacionado con el servicio de cookies a través de HTTPS en lugar de HTTP, que actualmente soy ..
Eric E

Probado y encontrado que funciona para HTTP también.
David Lin

Respuestas:


1

Hasta donde sé, esta es una advertencia sobre la nueva implementación de Chrome en el futuro

Opción samesite en las cookies: a partir de Chrome 80, las cookies que no especifiquen un atributo SameSite se tratarán como si fueran SameSite = Lax con el comportamiento adicional de que aún se incluirán en las solicitudes POST para facilitar la transición de los sitios existentes.

Más información: https://www.chromium.org/updates/same-site

Si desea probar su página web, este artículo explica cómo configurar los indicadores de Chrome para la prueba. Si su página deja de funcionar, debe verificar todas las solicitudes y buscar actualizaciones de "http: //" a "https: //" o verificar las cookies de terceros


-1

Enlace de documentación: https://www.npmjs.com/package/express-session#cookiesamesite

El siguiente código resolverá su problema. Esto también se recomienda en el futuro.

const express = require('express');
const session = require('express-session');
const app = express();

const sessionConfig = {
  secret: 'MYSECRET',
  name: 'appName',
  resave: false,
  saveUninitialized: false,
  store: store,
  cookie : {
    sameSite: 'strict', // THIS is the config you are looing for.
  }
};

if (process.env.NODE_ENV === 'production') {
  app.set('trust proxy', 1); // trust first proxy
  sessionConfig.cookie.secure = true; // serve secure cookies
}

app.use(session(sessionConfig));

En tu caso, establece sameSite a'none'

Editar actualización: problema solucionado señalado por CaptainAdmin


1
No hay propiedad como sameSite para la configuración de la sesión, es para cookie
CaptainAdmin
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.