Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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
Node.js Express服务器未设置Cookie_Node.js_Reactjs_Express_Cookies_Setcookie - Fatal编程技术网

Node.js Express服务器未设置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) 然后返回该函数,该函

我一直在试图找出在客户端登录授权后在服务器中设置cookie的代码有什么问题。当前,它将以表示cookie的空对象打印到控制台。后端服务器验证登录后,将按如下方式设置cookie:

// 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设置。在底部添加注释!