python - 睡衣 + Django => CSRF 困惑,403 错误

标签 python django csrf json-rpc pyjamas

我已经在 Windows 7 上通过带有 mod_wsgi 的 Apache2 运行 Pyjamas 和 Django。不过,我不认为我从这些东西的设置中遇到问题:唯一不起作用的是尝试从睡衣生成的表格。尝试在我的应用程序中使用 Pyjamas 生成的表单会产生 403(“CSRF 验证失败”错误页面)。

我在这上面花了好几个小时,阅读了我能在这里找到的所有与 CSRF 和 Pyjamas 相关的答案,并且只对 CSRF 和 Django、Django 和 Ajax 等做了很多外部研究。如果这个问题不是没有接触到任何知道在这种情况下该怎么做的人,我想我已经简化了问题的本质。

如何将 {% csrf_token %} 放入 Pyjamas 生成的表单中?这似乎是不可能的,因为据我所知,CSRF token 不是持久性的,而 Pyjamas 生成的页面是......我的 Pyjamas 页面是从 Pyjamas .py 文件生成的,导致一个装满硬编码内容的文件夹。我如何将当前的 CSRF token 集成到已经编码的表单中?

请不要犹豫,询问更多细节,这个问题非常难以解决。已发布的关于集成 Pyjamas 和 Django 的信息都没有考虑到这一点;我发现的唯一解决方案似乎知道 Django 中的 CSRF 说你应该只禁用 CSRF 保护(我可以做,但我可以用什么保护来代替它?我自己的 cookie系统?在任何情况下禁用 CSRF 保护都是一个糟糕的主意吗?)。

谢谢!

最佳答案

您需要编写一些 JavaScript 以从 cookie(HTTP 请求的一部分)中获取 CSRF token ,然后在提交时将其添加到表单中。

以这个答案作为起点:Django CSRF check failing with an Ajax POST request

这里的关键是 JavaScript 可以像 Pyjamas 生成的文件一样持久,因为它们会推迟处理 token ,直到提交表单。

关于python - 睡衣 + Django => CSRF 困惑,403 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7814826/

相关文章:

python - 使用独立的 Django 项目

python - 遵循 django 教程时出现错误

node.js - 在 Express 中使用 csurf 和 session

csrf - 如何使用 axios 发送 CSRF header ?

Django - {% csrf_token %} 在模板中使用,但上下文未提供值

python - 自动发现Python装饰器

python - 类属性的继承(python)

python - 将 Textarea 用于 CSVWidget 和 django-filter

python - 日期时间:在 isoformat() 中强制微秒输出

python - 在 python 中将 int 转换为小时(AM 或 PM)