我们在后端使用 django-rest-framework 制作 react SPA,并使用 django-rest-auth 进行用户身份验证。
当用户登录后,我们向他显示更改配置文件数据的表单。当用户提交此表单时,我们从登录响应中的 cookie 中获取 csrf 令牌,并将它们放入请求 X-CSRFToken 标头中。服务器响应令牌丢失或不正确。
如果用户刷新页面并重复相同的操作,则 csrf 令牌正确且配置文件数据已更新。
如何解决这个问题以及它为什么会发生?
我们在后端使用 django-rest-framework 制作 react SPA,并使用 django-rest-auth 进行用户身份验证。
当用户登录后,我们向他显示更改配置文件数据的表单。当用户提交此表单时,我们从登录响应中的 cookie 中获取 csrf 令牌,并将它们放入请求 X-CSRFToken 标头中。服务器响应令牌丢失或不正确。
如果用户刷新页面并重复相同的操作,则 csrf 令牌正确且配置文件数据已更新。
如何解决这个问题以及它为什么会发生?
看起来正在发生这种情况:
由于在刷新之前没有 GET 请求,因此 cookie+token 在此之前不会集中存储。添加一个请求来模拟 GET 期间发生的情况,然后将其存储在当前正在访问的位置以供后续请求使用。
参考