[英]Django (DRF) & React - Forbidden (CSRF cookie not set)
[英]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.