如何将 POST 数据中的 CSRF 令牌传递给 Django?

How to pass CSRF token in POST data to Django?

我正在开发一个带有 Django 后端和 Next.js 前端的应用程序。我正在尝试 POST 使用提取 API 从前端到后端的数据。 我在将 POST 数据中的有效 CSRF 令牌传递给 Django 时遇到问题。

我试图通过在我的 POST 请求中包含一个 X-CSRFToken header 并使用 JavaScript Cookie Library recommended on Django's documentation.

获取它的值来做到这一点

这是我的获取请求:

import Cookies from 'js-cookie';

// POST data
fetch('http://127.0.0.1:8000/dictionary/define', {     
  method: 'POST',     
  headers: {'X-CSRFToken': Cookies.get('csrftoken')},     
  body: JSON.stringify(data)})    
.then(response => response.json())   
.then(data => console.log(data))
.catch(error => console.log(error));

我从 Django 得到的错误当然是说没有设置 CSRF cookie:

Forbidden (CSRF cookie not set.): /...

谁能告诉我这里缺少什么?

我通过在我的请求中包含凭据解决了这个问题:

import Cookies from 'js-cookie';

// POST data
fetch('http://127.0.0.1:8000/dictionary/define', {     
  method: 'POST',
  credentials: 'include',     
  headers: {'X-CSRFToken': Cookies.get('csrftoken')},     
  body: JSON.stringify(data)})    
.then(response => response.json())   
.then(data => console.log(data))
.catch(error => console.log(error));