我有一个带有Django后端的React SPA。像大多数SPA一样,有一个index.html文件需要提供。但是问题在于该文件与nginx一起提供,因此用户无法获得进行api调用所需的csrf令牌。我并不是真的想提供index.html,因为它需要将文件与npm run build
输出的其余部分分开,并中断“仅将其放入/ static /目录”工作流,并且还出于缓存原因。还有其他解决方法吗?
答案 0 :(得分:-1)
CSRF令牌始终随每次页面加载而更新。它必须由django提供服务,因为django是提供并验证它的应用程序。将index.html文件放置在django模板文件夹中,在索引视图中提供该文件,将CSRF令牌转换为javascript代码,并在ReactJS代码中使用
index.html
...
<body>
<script>
var csrftoken = '{{ csrf_token }}';
</script>
...
</body>
...