2014-07-01 53 views
0

我有点困惑。django,在静态页面的窗体上设置csrf令牌

{{csrf_token}} 

然而,我的应用程序是一个科尔多瓦的应用程序,这意味着有一个从服务器没有装载: 的CSRF令牌在Django模板

与标签设置。 页面从设备的内存中获取。

如何在这种情况下获得csrf_token?

我想制作一个视图,我将用ajax调用,它将简单地将csrf_token字符串返回给调用者。

是你如何做到的?这会打破csrf_token安全性吗? 也许有更好的解决方案?

如果解决方案是正确的,请告诉您如何从请求中获取csrf标记。

所以,只是以一种不同的方式重申问题:我需要从静态页面提交表单。但是,当我这样做时,我得到csrf错误。

如何在不获取csrf错误的情况下提交表单?

在此先感谢。

回答

1

我认为sligodave链接到正确的文档,而不是在Django中描述的确切过程,您只需执行额外的步骤或获取csrf。如果您使用ensure_csrf_token为自己创建一个视图,以便您可以从中获取cookie,则可以使用JS来获取并解析该cookie,然后在您的POST中转向并使用它。由于请求在同一个域上,所以传递它不应该有任何问题。我将在安全堆栈上推迟this answer,以表示在这种做法中没有固有的安全缺陷。

0

我想你可以使用一点点的javascript来实现你想要的。

https://docs.djangoproject.com/en/1.6/ref/contrib/csrf/#ajax

你从cookie获得CSRF令牌并将其设置为你的响应头,或者也设置CSRF场表单上。

编辑:没关系,我错过了你的问题的“静态”部分。它永远不会经过django,所以没有csrf cookie。我会穿上我的大衣!