簡體   English   中英

Express 和 React,發送 CSURF 令牌

[英]Express and React, send CSURF token

我有一個使用 EJS 運行一些應用程序的 NodeJs 服務器,現在我想添加一個 React 應用程序。

但我不太設法將 csrf 令牌從 React 發送回服務器。

這是我的服務器設置:

const csrfMiddleware = csurf({
  cookie: true,
});
app.use(csrfMiddleware);

在這里,我試圖從前端發送它:

 let _csrf = cookie.load("_csrf");
      const config = {
        headers: {
          "CSRF-Token": _csrf,
          "Content-Type": "application/json",
        },
      };

但這不起作用,我得到ForbiddenError: invalid csrf token 我應該如何在不破壞當前服務器功能的情況下獲取 csrf?

提前致謝

我試着自己弄清楚,不知道這是否是最好的選擇(可能不是),但這對我有用。

服務器:

app.get("/getcsrf", (req, res) => {
  res.json({ _csrf: req.csrfToken() });
});

反應:

 const { data: csrfData } = await axios.get("/api/campaign/getcsrf");
     

我所做的是,在服務器上添加一個路由,以獲取生成的 csrf 令牌。

並在需要時在客戶端獲取它。

2個問題:

  1. 需要在每個后請求之前調用它
  2. 不知道它有多安全。

但至少它有效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM