Express会话不在ios/safari浏览器上存储cookie,但在android上运行良好



我已经面临这个问题好几个星期了,我正试图在IOS设备上登录我的应用程序,结果发现express session没有在浏览器中存储cookie,因此我无法登录。但我可以在我的安卓设备和笔记本电脑上登录。但我仍然无法在我的安卓设备上访问safari上的应用程序。

我的前端堆栈是Nextjs,后端是Nodejs和express。后端部署在heroku上,前端部署在netlify 上

请问我该如何解决这个问题。以下是我的代码。我确实喜欢我的应用程序在所有浏览器上运行。

==============================Server.js====================================

import express from "express"
import rootRoute from "./src/root_Route.js"
import cookieParser from "cookie-parser"
import passport from "passport"
import connectPgSimple from "connect-pg-simple"
import session from "express-session"
import dotenv from "dotenv"
import cors from "cors"
import "./src/LIB/DB-Client.js"
import "./src/PASSPORT_STRATEGY/google-auth-strategy.js"
import "./src/PASSPORT_STRATEGY/facebook-auth-strategy.js"
import { scheduleJob } from "node-schedule"
import pool from "./src/LIB/DB-Client.js"
dotenv.config()
const app = express()

const connection = process.env.PRODUCTION !== "production" ? process.env.DEV_DATABASE_URL : process.env.DATABASE_URL
app.use(
cors({
origin: ["http://localhost:3000", "https://nairaonly-frontend.netlify.app"],
credentials: true,
methods: "GET, PUT, POST, DELETE",
optionsSuccessStatus: 200,
})
)
const PgStore = connectPgSimple(session)
const store = new PgStore({ conString: connection, schemaName: "hidden", createTableIfMissing: true })
app.use(express.json())
app.use(cookieParser())
app.set("trust proxy", 1)
app.use(
session({
store: store,
secret: process.env.SESSION_SECRET,
saveUninitialized: false,
resave: true,
proxy: true,
cookie: {
maxAge: 1000 * 60 * 60 * 24,
httpOnly: true,
sameSite: process.env.NODE_ENV === "production" ? 'none' : 'lax',
secure: process.env.NODE_ENV === "production" ? true : false,
},
})
)
app.get("/", (req, res) => {
res.send("API Running...")
})
app.use(passport.initialize())
app.use(passport.session())
rootRoute(app)
const PORT = process.env.PORT || 4000
app.listen(PORT, (req, res) => console.log(`Server running on PORT:${PORT}...`))

我通过注册域名解决了这个问题,并添加了一个用于后端的子域和用于前端的域本身。然后我将DNS指向彼此。这解决了问题

相关内容