我已经在Windows 7上使用mod_wsgi通过Apache2运行了睡衣和Django。我不相信我从这些东西的设置中得到了问题,但是:唯一不起作用的是试图发布来自的信息睡衣生成的形式。尝试在我的应用程序中使用Pajamas生成的表单会产生403s(“CSRF验证失败”错误页面)。
我花了好几个小时在这里阅读了我在这里找到的与CSRF和睡衣相关的所有答案,并在CSRF和Django,Django和Ajax等方面做了很多外部研究。如果这个问题不是'对于那些知道在这种情况下该做什么的人,我想我已经削弱了问题的本质。
如何让{% csrf_token %}
成为睡衣生成的表格?看起来这可能是不可能的,因为根据我的理解,CSRF令牌不是持久性的,睡衣生成的页面是......我的睡衣页面是从睡衣.py
文件生成的,导致文件夹中满是硬编码的东西。我如何将当前的CSRF令牌集成到已编码的表单中?
请不要犹豫,询问更多细节,这个问题一直难以驾驭。没有关于整合睡衣和睡眠的公布信息。 Django对此表示满意;我发现在Django中似乎知道CSRF的唯一解决方案就是说你应该只是禁用CSRF保护(我可以做什么,但是我可以用什么保护代替它?我自己的cookie系统?在任何情况下都禁用CSRF保护是一个可怕的想法吗?)。
谢谢!
答案 0 :(得分:3)
您需要编写一些JavaScript来从cookie中获取CSRF令牌(HTTP请求的一部分),然后在提交时将其添加到表单中。
请看这个答案的起点:Django CSRF check failing with an Ajax POST request
这里的关键是JavaScript可以像你的睡衣生成的文件一样持久,因为它们会延迟处理令牌,直到提交表单。