问题描述
我正在使用Django后端和Next.js前端开发应用程序。我正在尝试使用访存API将数据从前端发布到后端。 我在将POST数据中的有效CSRF令牌传递给Django时遇到问题。
我正在尝试通过在POST请求中包含X-CSrftoken标头并使用Django JavaScript Cookie Library上推荐的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:
禁止(未设置CSRF cookie):/...
有人可以告诉我我在这里想念什么吗?
解决方法
我通过在请求中加入凭据来解决了这个问题:
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));