Cookies und SameSite + Secure - ExpressJS


8

Die folgende Warnung wird in der Konsole angezeigt, obwohl ich in meiner Express-Anwendung die folgenden Einstellungen vorgenommen habe. Hat jemand diesen Fehler schon einmal gesehen? Meine Suche brachte mich zu https://github.com/expressjs/express/issues/3095

Ich benutze auch 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.

Wenn ich eine Anfrage mit Insomia (Postman) mache, sehe ich Folgendes

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

Das Problem könnte damit zusammenhängen, dass die Cookies über HTTPS anstelle von HTTP bereitgestellt werden, was ich derzeit bin.
Eric E

Getestet und festgestellt, dass es auch für HTTP funktioniert.
David Lin

Antworten:


1

Soweit ich weiß, ist dies eine Warnung vor einer zukünftigen Implementierung von Chrome

samesite-Option für Cookies: Ab Chrome 80 werden Cookies, die kein SameSite-Attribut angeben, so behandelt, als wären sie SameSite = Lax, mit dem zusätzlichen Verhalten, dass sie weiterhin in POST-Anforderungen enthalten sind, um den Übergang für vorhandene Websites zu erleichtern.

Weitere Informationen: https://www.chromium.org/updates/same-site

Wenn Sie Ihre Webseite testen möchten, wird in diesem Artikel erläutert, wie Sie Chrome-Flags zum Testen festlegen. Wenn Ihre Seite nicht mehr funktioniert, müssen Sie alle Anfragen überprüfen und nach Updates für "http: //" bis "https: //" suchen oder Cookies von Drittanbietern überprüfen


-1

Dokumentationslink: https://www.npmjs.com/package/express-session#cookiesamesite

Der folgende Code löst Ihr Problem. Dies wird auch für die Zukunft empfohlen.

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

Stellen Sie in Ihrem Fall sameSiteauf ein'none'

Bearbeiten Update: Problem behoben , wies darauf hin , durch CaptainAdmin


Es gibt keine Eigenschaft wie sameSite für die Sitzungskonfiguration, sondern für Cookies
CaptainAdmin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.