Django CSRF 失败,使用 React 表单
Django CSRF failure, using React forms
我在使用 Django 和 React 时遇到 CSRF 问题。
我已经阅读了很多关于这个的问题,当然也阅读了 django 文档。我已经尝试了应该解决问题的不同方法的所有可能组合,但仍在努力解决这个问题。
首先我尝试创建一个注册页面,但是当我POST注册/我得到 CSRF cookie 未设置,403。
我已经禁用了 CSRF 中间件[我知道很糟糕,只是想到达某个地方],我收到 405s,方法不允许 [试图 post]。我只是想也许有人 运行 以前听过这件事,或者听起来很熟悉,可以提供一些指导吗?
我试过:
- 添加装饰器@csrf_exempt,
- 将 CSRF 添加到请求的 header 中,
- 附上整个饼干,
- 使用令牌附加隐藏的表单字段。
我正在使用这个种子项目:https://github.com/Seedstars/django-react-redux-base如果有人想看一看,我在 React 方面做了一些工作,但在 Django 方面做的不多,所以相距不远有什么
你不应该在 django 中禁用 csrf 检查。
而不是在你的 form/template 中简单地做
{% csrf_token %}
不是{{ csrf_token }}
它将打印一个隐藏的表单元素,其值已经分配给您的 csrf 令牌。
如果您使用 ajax,您只需将 ajax headers 全局设置为:
$.ajaxSetup({
beforeSend: function (xhr, settings) {
// this time double brackets
xhr.setRequestHeader("X-CSRFToken", "{{csrf_token}}");
}
});
如果您正在使用 fetch 那么:
fetch('some/url/here', {
method: 'GET',
headers: {
'X-CSRFToken': window.CSRF_TOKEN // or pass it in your own way
}
}).then(function (response) {
return response.json()
})
我能想到的差不多就这些了
希望这对您有所帮助。
我在使用 Django 和 React 时遇到 CSRF 问题。
我已经阅读了很多关于这个的问题,当然也阅读了 django 文档。我已经尝试了应该解决问题的不同方法的所有可能组合,但仍在努力解决这个问题。
首先我尝试创建一个注册页面,但是当我POST注册/我得到 CSRF cookie 未设置,403。
我已经禁用了 CSRF 中间件[我知道很糟糕,只是想到达某个地方],我收到 405s,方法不允许 [试图 post]。我只是想也许有人 运行 以前听过这件事,或者听起来很熟悉,可以提供一些指导吗?
我试过: - 添加装饰器@csrf_exempt, - 将 CSRF 添加到请求的 header 中, - 附上整个饼干, - 使用令牌附加隐藏的表单字段。
我正在使用这个种子项目:https://github.com/Seedstars/django-react-redux-base如果有人想看一看,我在 React 方面做了一些工作,但在 Django 方面做的不多,所以相距不远有什么
你不应该在 django 中禁用 csrf 检查。
而不是在你的 form/template 中简单地做
{% csrf_token %}
不是{{ csrf_token }}
它将打印一个隐藏的表单元素,其值已经分配给您的 csrf 令牌。
如果您使用 ajax,您只需将 ajax headers 全局设置为:
$.ajaxSetup({
beforeSend: function (xhr, settings) {
// this time double brackets
xhr.setRequestHeader("X-CSRFToken", "{{csrf_token}}");
}
});
如果您正在使用 fetch 那么:
fetch('some/url/here', {
method: 'GET',
headers: {
'X-CSRFToken': window.CSRF_TOKEN // or pass it in your own way
}
}).then(function (response) {
return response.json()
})
我能想到的差不多就这些了
希望这对您有所帮助。