【问题标题】:cookie are not set in browser when I am use the node as backend当我将节点用作后端时,浏览器中未设置 cookie
【发布时间】:2023-01-25 02:08:41
【问题描述】:

Cookie 未在浏览器中设置。我使用节点作为后端。我正在尝试搜索一些人告诉我不会设置 cookie 的问题,因为我正在使用反应作为前端和节点作为支持,两者都在本地主机的同一虚拟服务器上运行。这就是它发生的原因。 这是我的代码请帮助。用户.js

const bcrypt = require('bcrypt');
const jwt = require('jsonwebtoken');
const RegisterModel = require("../Model/RegisterModel")
const signIn = async (req,res)=>{
    try {
       const data = await RegisterModel.findOne({Email:req.body.email})
       const passwordMatch = await bcrypt.compare(req.body.password,data.Password)
       const token = await jwt.sign({Email : data.Email}, process.env.SECRET)
       
       if(!data) return res.status(404).json({islogin:false, message: "User doesn't exist" })
       if(!passwordMatch) return res.status(400).json({islogin:false,message: "Incorrect Password"})
       
       if(passwordMatch){
        res.cookie('newToken',token, { maxAge: 900000, httpOnly: false});
        res.status(200).send({id:data._id,email:data.Email,name:data.Name,islogin:true,token:token})
        
         }
    } catch (error) {
        res.status(404).json({islogin:false,message:"User doesn't exist"})
        console.log(error)
    }
}


module.exports = {signIn,signUp};

应用程序.js

const express = require('express');

var cookieParser = require('cookie-parser')
const app = express();
app.use(cookieParser())
const dotenv = require('dotenv');
dotenv.config()

var cors = require('cors')
const PORT = process.env.PORT ;
const router = require("./Router/Router")

app.use(cors())
app.use(express.json())
app.use(express.urlencoded({extended:false}));
app.use(router);
require("./Connection/Connection")


app.listen(PORT,()=>{
        console.log(`Listen at Port ${PORT}` )
})

【问题讨论】:

  • 你如何从前端发出请求?
  • 使用 axios 我将请求登录。当登录成功时,我将生成 cookie 并尝试存储浏览器 cookie。
  • 我正在尝试这个但显示新错误
  • 从来源“localhost:3000”到“localhost:3001/admin/login”处的 XMLHttpRequest 的访问已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:“Access-Control-Allow-Origin”标头的值在当请求的凭据模式为“include”时,响应不能是通配符“*”。 XMLHttpRequest 发起的请求的凭据模式由 withCredentials 属性控制。

标签: node.js reactjs cookies mern


【解决方案1】:

要将凭据数据设置到浏览器中,必须在同一域上同时运行后端应在本地主机或 127.0.0.1 上运行,前端应在本地主机或 127.0.0.1 上运行分别. 或者

后端和前端运行在 =localhost 或者

后端和前端在 =127.0.0.1 上运行

如果您不确定,则在控制台上显示错误。这里

浏览器提示您有关 cookie 的错误。 花了 4 天后,这种方法对我有用。

【讨论】:

    猜你喜欢
    • 2018-10-26
    • 1970-01-01
    • 2021-11-03
    • 2019-06-08
    • 2021-09-30
    • 2019-07-25
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多