You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React从Django后端/api/csrf_cookie获取CSRF Token及使用问题

本地Django + React 获取CSRF Token问题

我本地部署了Django后端,API接口/api/csrf_cookie在Postman中验证正常,但对CORS了解有限,不清楚如何在React中正确获取CSRF Token。尝试了多种代码片段均无效,当前使用的代码如下:

const API_HOST = 'http://localhost:8000';

let _csrfToken = null;

async function getCsrfToken() {
    if (_csrfToken === null) {
      const response = await fetch(`${API_HOST}/api/csrf_cookie`, {
        credentials: 'include',
      });
      const data = await response.json();
      _csrfToken = data.csrfToken;
    }
    return _csrfToken;
}

async function postRegister(email, password, cfmPassword, firstName, lastName, betaKey) {
    const csrfToken = await getCsrfToken();
    const response = await fetch(`${API_HOST}/api/register/`, {
        method: 'POST',
        headers: {
        'X-CSRFToken': csrfToken,
        'Content-Type': 'application/json'
        },
        credentials: 'include',
        body: JSON.stringify({
        email: email,
        password: password,
        cfm_password: cfmPassword,
        first_name: firstName,
        last_name: lastName,
        beta_key: betaKey
        })
    });
    const data = await response.json();
    return data.result;
}

更新1

我使用了以下钩子,页面加载时已成功获取到Token,但不知如何将其调用到表单提交中:

useEffect(() => {
    let csrfToken = null;

    async function getCsrfToken() {
        if (csrfToken === null) {
          const response = await fetch(`${API_HOST}/api/csrf_cookie`, {
            credentials: 'include',
          });
          const data = await response.json();
          csrfToken = data.csrfToken;
        }
        return csrfToken;
    }

    getCsrfToken();
}, []);

更新2

我又尝试了以下获取Cookie的函数,但无法找到对应的CSRF Cookie:

function getCookieValue(name) {
    const cookies = document.cookie.split('; ');
    for (let i = 0; i < cookies.length; i++) {
      const cookie = cookies[i];
      const [cookieName, cookieValue] = cookie.split('=');
      if (cookieName === name) {
        console.log(`Found cookie ${name} with value ${cookieValue}`);
        return cookieValue;
      }
    }
    console.log(`Could not find cookie ${name}`);
    return '';
}

内容的提问来源于stack exchange,提问作者Chinmay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 16:06:28