繁体   English   中英

Django DRF with React:如何获取 CSRF cookie?

[英]Django DRF with React: How to obtain CSRF cookie?

我有一个在frontend.example.com运行的 React 前端和一个 Django 后端,DRF 在backend.example.com运行。 我正在使用 Django Session 身份验证,我想正确实施CSRF 保护

以 React 登录页面frontend.example.com/login为例。 这是用户第一次访问该页面。 有一个带有用户和密码的表单,在提交时会向 Django 后端创建一个新的 POST 请求。 据我所知,CSRF 令牌 cookie 应该已经包含在此请求中,对吧?

如何从 Django 后端获取该 CSRF 令牌? 我正在考虑在加载登录页面时向 Django 后端发出 GET 请求以获取该 CSRF 令牌 cookie。 这是这样做的方法还是有其他最佳做法?

Django 有一个 AJAX 请求和如何处理 CSRF 的部分: AJAX

使用此方法,您应该为每个发布请求一遍又一遍地发送令牌。 另一种方法是使用 CORS。 在此方法中,您仅响应已列入白名单的域,并且标头也已列入白名单。 因此,您无需获取和传递 CSRF 令牌,而是检查请求是否来自正确的域,然后您可以对其进行响应。 并结合用于用户身份验证的令牌系统,您应该会很好。

如果您使用 DRF,则可以使用此 package 来处理 CORS: django-cors-headers

使用速率限制还可以帮助您避免垃圾邮件和机器人造成明显伤害。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM