django - 当 nginx 提供 index.html 时从 Django 获取 CSRF token

标签 django nginx single-page-application django-csrf

我有一个带有 Django 后端的 React SPA。与大多数 SPA 一样,需要提供一个 index.html 文件。但问题是这个文件是用 nginx 提供的,所以用户没有获得调用 api 所需的 csrf token 。我真的不想提供 index.html,因为它需要将文件与 npm run build 输出的其余部分分开并打破“只需将其放入/static/目录”工作流程,并且也是出于缓存原因。还有其他解决方法吗?

最佳答案

CSRF token 总是随着每次页面加载而更新。它必须由 django 提供服务,因为 django 是提供和验证它的应用程序。将 index.html 文件放在你的 django 模板文件夹中,将它与你的索引 View 一起提供,将 CSRF token 转换为 javascript 代码并在你的 ReactJS 代码中使用它

index.html

...
<body>
<script>
     var csrftoken = '{{ csrf_token }}';
</script>
...
</body>
...

关于django - 当 nginx 提供 index.html 时从 Django 获取 CSRF token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51419578/

相关文章:

python - 变音符号

python - Django 管理主题

python - Django: atomic(): Force transaction, raise AssertionError 如果已经在事务中

django、react js、nginx : deploy prosses

reactjs - SPA + 返回按钮 + 表单状态

python - Django 迁移 int() 的无效文字

nginx - 安装后如何为nginx配置附加模块?

python - 如何在 Python 后台运行长时间运行的作业

store - 单个应用程序上的谷歌可信商店

angularjs - 让 Angular 与 Moodle Web 服务配合使用