NodeJS,VueJS,快速会话。 Cookie不在客户端设置

时间:2019-09-18 08:31:59

标签: node.js vue.js express-session

我使用的应用程序已经具有自己的基础架构。任务是集成会话cookie机制。我花了很多时间来理解为什么客户端没有设置cookie。

I。简短地。

应用设置:

服务器:NodeJS 端口:8081

客户:VueJS 端口:8088

我使用模块“ express-session”来初始化服务器端的会话机制,并将cookie发送给客户端。客户尚未设置Cookie。

II。详细信息:

服务器的根文件是 index.js

我在其中执行以下操作:

插入express模块:

const express = require('express')
  1. 插入cors模块:
const cors = require('cors')
  1. 添加cors设置:
app.use(cors({
    origin: 'http://localhost:8088',
    credentials: true
}))

然后我在 user.js 文件中初始化会话并接收客户端的连接: 插入express-session模块:

const session = require('express-session')
  1. 通过express.Router()插入路由:
const router = express.Router()
  1. 添加会话设置:
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'
  1. 初始化会话:
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
    }
}))
  1. 通过router.post()接收客户端查询

应用程序客户端包含许多文件。客户端通过Axios模块将数据发送到NodeJS服务器。

我按此主题阅读了几篇文章,我想我所做的服务器端设置对于工作会话cookie机制已经足够了。那意味着那个问题在Vue方面。

我所做的:

  1. 我设置了所有文件,在这些文件中,Axios将数据发送到服务器,参数withCredentials为真值(withCredentials:true)以通过CORS限制。这没有帮助

  2. 生产环境中的
  3. App具有其他URL,用于访问生产NodeJS服务器。我在所有客户端文件中都设置了开发NodeJS服务器URL。这没有帮助

  4. 阅读本文:Vue forum。从本文中我了解到,需要通过axios.interceptors(StackOverFlow 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,则该机制有效。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。我需要在其他浏览器中查找cookie存储:

Chrome server cookie storage