NodeJS、VueJS、快速会话。 cookie 不在客户端设置
Posted
技术标签:
【中文标题】NodeJS、VueJS、快速会话。 cookie 不在客户端设置【英文标题】:NodeJS, VueJS, express-session. Cookies don't set on client side 【发布时间】:2020-01-19 03:38:05 【问题描述】:我使用的应用程序已经拥有自己的基础架构。任务是集成 session-cookie 机制。我花了很多时间来理解为什么 cookie 没有在客户端设置。
我。简要说明。
应用设置:
服务器:NodeJS 端口:8081
客户端:VueJS 端口:8088
我使用模块“express-session”在服务器端初始化会话机制并将 cookie 发送到客户端。客户端没有设置cookies。
二。详情:
服务器的根文件是index.js。
我在里面做了以下事情:
插入express
模块:
const express = require('express')
-
插入
cors
模块:
const cors = require('cors')
-
添加
cors
设置:
app.use(cors(
origin: 'http://localhost:8088',
credentials: true
))
然后我在 user.js 文件中初始化会话并接收客户端的连接:
插入express-session
模块:
const session = require('express-session')
-
通过 express.Router() 插入路由:
const router = express.Router()
-
添加会话设置:
const EIGHT_HOURS = 1000 * 60 * 60 * 2
const
SESS_NAME = 'sid',
SESS_LIFETIME = EIGHT_HOURS,
SESS_SECRET = 'test',
NODE_ENV = 'development'
= process.env
const IN_PROD = NODE_ENV === 'production'
-
初始化会话:
router.use(session(
name: SESS_NAME,
resave: false,
saveUninitialized: false,
secret: SESS_SECRET,
cookie:
maxAge: SESS_LIFETIME,
sameSite: false,
// Must have HTTPS to work 'secret:true'
secure: IN_PROD
))
-
通过
router.post()
接收客户端查询
App 客户端由很多文件组成。客户端通过 Axios 模块向 NodeJS 服务器发送数据。
我读了几篇关于这个主题的文章,我猜我所做的服务器端设置足以用于工作 session-cookie 机制。这意味着,这个问题在 Vue 方面。
我做了什么:
我在所有文件中设置,其中axios向服务器发送数据,参数withCredentials为真值(withCredentials: true)通过CORS限制。这没有帮助
生产中的应用程序有其他 URL 用于访问生产 NodeJS 服务器。我在所有客户端文件中设置了开发 NodeJS 服务器 URL。这没有帮助
阅读这篇文章:Vue forum。从这篇文章中我了解到,需要通过 axios.interceptors (*** forum) 来解决这个问题。我想如果这个设置设置在客户端的一个页面上,可能是 cookie 至少应该在这个页面上工作。这没有帮助。 尝试设置这样的设置:
axios.defaults.withCredentials = true
还有:
axios.interceptors.request.use( function (config)
console.log('Main interceptor success')
config.withCredentials = true;
return config;
,
function(error)
// Do something with request error
console.log('Main interceptor error')
return Promise.reject(error);
)
这没有帮助
请告诉我我应该朝哪个方向移动?对吗,在客户端上的所有页面都必须是axios.defaults.withCredentials = true
设置来初始化cookie 机制?我错过了什么细节?如果我从头开始设置会话 cookie,该机制就可以工作。
【问题讨论】:
您如何确定未设置 cookie?您是否检查了“网络”选项卡中的请求,以确定每种方式发送的确切内容并确认它是正确的? 是的,当然,我在 Chrome 中检查网络选项卡。没有关于服务器会话或 cookie 的信息,但会话正在服务器上运行。我正在 Chrome 开发工具的应用程序选项卡中寻找任何 cookie 数据。没有信息。 Gleb 你在这个问题上有什么进展吗?我有完全相同的错误 @Tichel,是的,我解决了这个问题。我需要在另一个浏览器的地方寻找cookie存储:Chrome server cookie storage上图中的Chrome设置是俄文的,英文需要选择Cookie设置。 【参考方案1】:我解决了这个问题。我需要在另一个浏览器位置寻找 cookie 存储:
Chrome server cookie storage
【讨论】:
以上是关于NodeJS、VueJS、快速会话。 cookie 不在客户端设置的主要内容,如果未能解决你的问题,请参考以下文章
NodeJS + Google Login + Firebase Functions 导致解码 Firebase 会话 cookie 失败