问题描述
我只想分享我无法在任何地方找到的跨站点请求(FE 托管在 Firebase 上,BE 托管在 Heroku 上)的 cookie 设置,只是那里的一条信息和其他地方的一条信息。
设置如下:
React.js (Firebase) - 获取对后端 Node.js + Express (Heroku) 的请求。使用 cookie-session 和 cors。请看下面的答案。希望它有助于节省您的时间。
解决方法
这对我有用:
const cookieSession = require("cookie-session");
const cookieParser = require("cookie-parser");
const cors = require("cors");
// Set session cookies
app.set("trust proxy",1);
app.use(
cookieSession({
name: "session",keys: [process.env.COOKIE_KEY],maxAge: 86400000,sameSite: "none",secure: process.env.NODE_ENV === "production",})
);
app.use(cookieParser());
// Set up cors
app.use(
cors({
origin: process.env.CLIENT_PATH,methods: "GET,HEAD,PUT,PATCH,POST,DELETE",credentials: true,})
);
从 React 获取请求:
fetch(url,{
method: "GET",credentials: "include",headers: {
Accept: "application/json","Content-Type": "application/json","Access-Control-Allow-Credentials": true,},}
);