React.js + Node.js 上的 Express:跨站点请求的正确 cookie 设置是什么?

问题描述

我只想分享我无法在任何地方找到的跨站点请求(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,},}
    );

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...