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
相关产品推荐
相关产品推荐

