Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 饼干和SameSite+;Secure-ExpressJS_Javascript_Node.js_Express_Cookies - Fatal编程技术网

Javascript 饼干和SameSite+;Secure-ExpressJS

Javascript 饼干和SameSite+;Secure-ExpressJS,javascript,node.js,express,cookies,Javascript,Node.js,Express,Cookies,尽管我的express应用程序上有以下设置,但控制台中仍显示以下警告。以前有人见过这个错误吗?我的搜寻使我清醒过来 我也在使用express:4.17.1 let COOKIE_OPTIONS = { httpOnly: true, sameSite: 'None', secure: true }; 当使用Insomia(邮递员)执行请求时,我看到以下内容 access_token=someToken; Path=/; HttpOnly; Secure; SameSite=None

尽管我的express应用程序上有以下设置,但控制台中仍显示以下警告。以前有人见过这个错误吗?我的搜寻使我清醒过来

我也在使用express:4.17.1

let COOKIE_OPTIONS = { httpOnly: true, sameSite: 'None', secure: true };
当使用Insomia(邮递员)执行请求时,我看到以下内容

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

就IKwon而言,这是对未来chrome新实现的警告

Cookie上的samesite选项:从Chrome 80开始,未指定samesite属性的Cookie将被视为samesite=Lax,其附加行为仍将包括在POST请求中,以简化现有站点的转换

任何进一步资料:

如果您希望测试您的网页,本文将解释如何为测试设置Chrome标志。如果您的页面停止工作,您必须检查所有请求并查看“http://”到“https://”的更新或检查第三方cookie文件链接:

下面的代码将解决您的问题。这也是今后的建议

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));
在您的情况下,将
sameSite
设置为
'none'

如果您想知道什么是
存储
?我正在使用我的数据库作为所有cookie的存储。这与OP提出的问题无关。正如@klevis在评论中指出的那样,刚刚补充了这一点。代码如下:

const KnexSessionStore = require('connect-session-knex')(session);
const store = new KnexSessionStore({
  tablename: 'session',
  knex: kx,
  createtable: false
});
  • 编辑1:修复了船长指出的问题
  • 编辑2:添加了存储定义

问题可能与通过HTTPS而不是我目前正在测试的HTTP提供cookie有关。测试发现它也适用于HTTP。会话配置没有类似sameSite的属性,它适用于Cookie存储:存储是什么?看不出它的定义。。。
const KnexSessionStore = require('connect-session-knex')(session);
const store = new KnexSessionStore({
  tablename: 'session',
  knex: kx,
  createtable: false
});