Node.js Express服务器未设置Cookie
我一直在试图找出在客户端登录授权后在服务器中设置cookie的代码有什么问题。当前,它将以表示cookie的空对象打印到控制台。后端服务器验证登录后,将按如下方式设置cookie:Node.js Express服务器未设置Cookie,node.js,reactjs,express,cookies,setcookie,Node.js,Reactjs,Express,Cookies,Setcookie,我一直在试图找出在客户端登录授权后在服务器中设置cookie的代码有什么问题。当前,它将以表示cookie的空对象打印到控制台。后端服务器验证登录后,将按如下方式设置cookie: // UserController.js (server-side) res.cookie('token', token ) .cookie('username', username) .status(201) .send(username) 然后返回该函数,该函
// UserController.js (server-side)
res.cookie('token', token )
.cookie('username', username)
.status(201)
.send(username)
然后返回该函数,该函数将其重定向到一个新页面
/// Login.js (client-side)
const login = async () => {
var token = params.get("token")
const config = {
method: 'POST',
url: url + "/users/fbLogin",
headers: {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "http://localhost:3000"
},
data: {
fb_id: fb_id,
token: token,
}
}
var res = await axios(config)
if(res.status === 201) {
window.location.assign(`${client_url}/home?user=${res.data}`);
}
}
当页面重定向时,它会将get请求发送回服务器,如下所示:
// UserHome.js
function validateUser(username){
// axios.defaults.withCredentials = true
const config = {
method: 'GET',
url: url + '/users/auth',
// withCredentials: 'true',
headers: {
"Content-Type": "application/json",
'Access-Control-Allow-Credentials': true,
"Access-Control-Allow-Origin": "http://localhost:3000"
},
data: {
username: username
},
}
try {
var res = axios(config)
} catch(err) {
console.log(err)
}
}
此请求由以下功能处理:
// UsersController.js
UsersController.auth = async function(req, res) {
console.log(req.cookies)
}
当前打印出以下内容:[对象:空原型]{}
有人知道我明显做错了什么吗?我也在Chrome和Safari中测试它,并且有同样的问题
快速设置:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const cors = require('cors');
const api = require('./api/index.js');
const passport = require('passport')
const cookieParser = require("cookie-parser");
var cookieSession = require('cookie-session')
// setup the connection
const port = process.env.PORT || 5000;
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
// use it before all route definitions
app.use(cors({origin: 'http://localhost:3000'}));
app.use(passport.initialize());
app.use(passport.session());
app.use(cookieSession({
auth: 'session',
keys: 'secret',
maxAge: 900000,
httpOnly: false,
sameSite: false,
overwrite: true
}))
app.use(cookieParser());
app.use('/', api);
app.listen(port, () => console.log(`Listening on port ${port}`));
显示您的express设置。在底部添加注释!