[根据Django文档,如果您的视图未呈现其中带有csrf_token标记的html模板,由于您未使用Django的内置模板进行输出,因此我想这是您的情况,将不会设置cookie。一种可能的解决方案是在urlpatterns中对ensure_csrf_token装饰器的视图调用。
首先,我知道关于CSRF令牌/ Django的许多问题,但我还没有发现对我所处的场景有用的任何问题。
我正在尝试将Django的内置密码重置端点与React前端一起使用。我的目标是在通过React而不是使用Django模板显示相关表单时,使用后端功能(生成令牌,电子邮件响应等)。前端和后端托管在两个唯一的服务器上。
在我的前端代码中,当我的React组件挂载以获取CSRF令牌时,我对password_reset
端点进行了调用。
componentDidMount() {
let url = "http://(raw ip address)/accounts/password_reset/"
fetch(url, {
credentials: 'include',
})
}
令牌在响应头中以]的形式接收>
Set-Cookie: csrftoken=b...e; expires=Sun, 10 Jan 2021 21:50:20 GMT; Max-Age=31449600; Path=/; SameSite=Lax
这里是我的问题开始的地方-我无法在存储标签中检查令牌,并且document.cookie
中不存在令牌值。理想情况下,我想使用类似getCookie
方法的方法,该方法已在Django文档中演示]
function getCookie(name) { var cookieValue = null; if (document.cookie && document.cookie !== '') { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i].trim(); // Does this cookie string begin with the name we want? if (cookie.substring(0, name.length + 1) === (name + '=')) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break; } } } return cookieValue; }
但是假设令牌值正确存储在
document.cookie
中。我相关的Django设置均为默认值,尽管我已将
CSRF_COOKIE_SAMESITE
和CSRF_USE_SESSIONS
的有效选项轮换使用,但没有用。
另外,如果在安装组件后发出POST
请求,则在请求上成功设置了令牌-但我需要在主体中为默认的Django身份验证视图添加令牌!
任何建议或见解将不胜感激!
伊恩
首先,我知道关于CSRF令牌/ Django的许多问题,但是我还没有发现对我所处的场景有用的任何问题。我试图使用Django的内置密码重置...
] >[根据Django文档,如果您的视图未呈现其中带有csrf_token标记的html模板,由于您未使用Django的内置模板进行输出,因此我想这是您的情况,将不会设置cookie。一种可能的解决方案是在urlpatterns中对ensure_csrf_token装饰器的视图调用。
[根据Django文档,如果您的视图未呈现其中带有csrf_token标记的html模板,由于您未使用Django的内置模板进行输出,因此我想这是您的情况,将不会设置cookie。一种可能的解决方案是在urlpatterns中对ensure_csrf_token装饰器的视图调用。