如何解决节点:Cookie 未在浏览器中使用此代码设置 res.cookie("singingGroupAVoted", true, {maxAge: 432000 * 1000, sameSite: "none", secure: true})
我使用 node express 构建了一个 API,并将其部署在 Heroku 上。然后我用 reactJS 构建客户端并将其部署在 Netlify 上。我使用了 cors 包来避免 cors 错误。这是我的服务器文件(后端入口点)-
const express = require("express");
const app = express();
const requestIP = require("request-ip");
const requestCountry = require("request-country");
const mongoose = require("mongoose");
require("dotenv").config();
const bodyParser = require("body-parser");
const cors = require("cors");
const cookieParser = require("cookie-parser");
const singingGroupA = require("./routes/api/singing/groupA");
const singingGroupB = require("./routes/api/singing/groupB");
const mehandiGroupA = require("./routes/api/mehandi/groupA");
const mehandiGroupB = require("./routes/api/mehandi/groupB");
const post = require("./routes/api/post");
const contact = require("./routes/api/contact");
const PORT = process.env.PORT || 5000;
const DB_URL = `mongodb+srv://${process.env.DB_USER}:${process.env.DB_PASS}@bsp-competitions.n2yb5.mongodb.net/${process.env.DB_NAME}?retryWrites=true&w=majority`;
// connect database
mongoose
.connect(DB_URL,{
useNewUrlParser: true,useUnifiedTopology: true,useFindAndModify: false,})
.then(() => {
console.log("database connected");
})
.catch((err) => console.log(err));
var allowedDomains = [
"http://localhost:3000","https://www.freedemy.in","https://freedemy.in","http://127.0.0.1:3000","https://dance-and-mehandi-bsp.herokuapp.com",];
app.use(
cors({
origin: function (origin,callback) {
// bypass the requests with no origin (like curl requests,mobile apps,etc )
if (!origin) return callback(null,true);
if (allowedDomains.indexOf(origin) === -1) {
var msg = `This site ${origin} does not have an access. Only specific domains are allowed to access it.`;
return callback(new Error(msg),false);
}
return callback(null,true);
},credentials: true,methods: ["GET","POST","PUT","OPTIONS"],})
);
app.use(bodyParser.urlencoded({ extended: false })); // parse application/x-www-form-urlencoded
app.use(bodyParser.json()); // parse application/json
app.use(cookieParser());
app.use(requestIP.mw());
app.use(
requestCountry.middleware({
attributeName: "requestCountryCode",// default is 'requestCountryCode'
privateIpCountry: "IN",// Result for private network IPs
})
);
// route middlewares
app.use("/api/post",post);
app.use("/api/contact",contact);
app.use("/api/singing/group-a",singingGroupA);
app.use("/api/singing/group-b",singingGroupB);
app.use("/api/mehandi/group-a",mehandiGroupA);
app.use("/api/mehandi/group-b",mehandiGroupB);
if (process.env.NODE_ENV == "production") {
app.use(express.static("client/build"));
const path = require("path");
app.get("/*",(req,res) => {
res.sendFile(path.join("/","app","client","build","index.html"));
});
}
app.listen(PORT,() => {
console.log("server is running on port : ",PORT);
});
一切正常,除了 COOKIES :(
当我发送 post 请求时,浏览器应该保存一个 cookie,但它没有保存,我不知道为什么。 这就是我使用 cookie 发送响应的方式 -
res
.status(200)
.cookie("singingGroupAVoted",true,{
maxAge: 432000 * 1000,sameSite: "none",secure: true,})
.send({
success: true,message: "Vote registered successfully",});
不知道浏览器没有保存 cookie。 我们将不胜感激任何类型的帮助
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。