在像 Django + React.js 这样的 API 中,生成 CSRF 令牌的方法如下:
- Django 后端配置:
- 在 Django 项目的
settings.py
文件中,确保 django.middleware.csrf.CsrfViewMiddleware
中间件已启用。 - 在前端应用的域名或 IP 地址被允许的跨域请求列表(CORS)中添加前端应用的地址。
- 在 Django 项目的根 URL 配置文件中,将
django.middleware.csrf.csrf_exempt
装饰器应用于 API 视图函数,以免对特定视图进行 CSRF 保护。
- React.js 前端配置:
- 在前端项目中,使用
axios
或其他 HTTP 请求库发送请求。 - 在发送 POST、PUT、DELETE 等需要修改数据的请求时,需要在请求头中添加 CSRF 令牌。
- 可以通过在 React.js 项目的入口文件中导入
axios
并设置默认请求头的方式,全局自动添加 CSRF 令牌。
生成 CSRF 令牌的具体步骤如下:
- 后端生成 CSRF 令牌:
- Django 在用户登录时会为用户生成一个 CSRF 令牌,并将其存储在用户的会话中。
- 当用户进行请求时,Django 会将该令牌添加到响应的 Cookie 中,并在表单或请求头中返回给前端。
- 前端获取 CSRF 令牌:
- 前端应用在首次加载时,可以通过发送一个 GET 请求获取 CSRF 令牌。
- 在响应中,Django 会将 CSRF 令牌作为 Cookie 返回给前端应用。
- 前端发送请求时添加 CSRF 令牌:
- 在发送 POST、PUT、DELETE 等需要修改数据的请求时,需要将 CSRF 令牌添加到请求头或请求体中。
- 请求头中的 CSRF 令牌名称为
X-CSRFToken
,可以通过读取 Cookie 中的 CSRF 令牌值并设置到请求头中。
需要注意的是,CSRF 令牌的生成和验证是 Django 自动处理的,前端只需要正确地添加令牌到请求中即可。
推荐的腾讯云相关产品和产品介绍链接地址:
- 腾讯云主页:https://cloud.tencent.com/
- 云服务器(CVM):https://cloud.tencent.com/product/cvm
- 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
- 腾讯云 CDN:https://cloud.tencent.com/product/cdn
- 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
- 人工智能平台(AI Lab):https://cloud.tencent.com/product/ailab
- 腾讯云区块链服务(Tencent Blockchain):https://cloud.tencent.com/product/tencentblockchain