【问题标题】:React.js + Express on Node.js: What is the correct cookie setting for cross-site requests?Node.js 上的 React.js + Express:跨站点请求的正确 cookie 设置是什么?
【发布时间】:2021-05-03 08:35:20
【问题描述】:

我只想分享我无法在任何地方找到的跨站点请求(FE 托管在 Firebase,BE 托管在 Heroku)的 cookie 设置,只是那里的一条信息和其他地方的一条信息。

设置如下:

React.js (Firebase) - 将请求获取到后端 Node.js + Express (Heroku)。使用 cookie-session 和 cors。请看下面的答案。希望它可以帮助您节省时间。

【问题讨论】:

    标签: node.js reactjs cookies cors cookie-session


    【解决方案1】:

    这对我有用:

    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,
            },
          }
        );
    

    【讨论】:

      猜你喜欢
      • 2020-10-26
      • 2018-02-27
      • 1970-01-01
      • 1970-01-01
      • 2016-08-09
      • 2015-12-21
      • 2016-05-12
      相关资源
      最近更新 更多