Cookies e SameSite + Secure - ExpressJS


8

O aviso a seguir está sendo mostrado no console, embora eu tenha as seguintes configurações no meu aplicativo expresso. Alguém viu este erro antes? Minha pesquisa me levou a https://github.com/expressjs/express/issues/3095

Também estou 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.

Ao fazer uma solicitação usando Insomia (Postman), vejo o seguinte

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

Problema pode estar relacionado a servir os biscoitos através de HTTPS em vez de HTTP que atualmente eu sou ..
Eric E

Testado e constatado que funciona para HTTP também.
David Lin

Respostas:


1

Até onde eu sei, este é um aviso sobre a nova implementação do chrome no futuro

opção samesite nos cookies: a partir do Chrome 80, os cookies que não especificarem um atributo SameSite serão tratados como se fossem SameSite = Lax com o comportamento adicional de que ainda serão incluídos nas solicitações POST para facilitar a transição para sites existentes.

Mais informações: https://www.chromium.org/updates/same-site

Se você deseja testar sua página da web, este artigo explica como definir sinalizadores do Chrome para teste. Se sua página parar de funcionar, verifique todas as solicitações e consulte as atualizações "http: //" a "https: //" ou verifique os cookies de terceiros


-1

Link da documentação: https://www.npmjs.com/package/express-session#cookiesamesite

O código abaixo resolverá seu problema. Isso também é recomendado daqui para frente.

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));

No seu caso, defina sameSitecomo'none'

Editar atualização: Corrigido o problema apontado pelo CaptainAdmin


1
Não existe nenhuma propriedade como sameSite para configuração de sessão, é para cookie
CaptainAdmin
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.