django,在静态页面中的表单上设置csrf标记

时间:2014-07-01 14:26:15

标签: android django cordova django-views csrf

我有点困惑。 csrf标记在django templates

中设置

使用标记:

{{csrf_token}}

但是,我的应用程序是Cordova应用程序,这意味着服务器没有任何加载。 页面是从设备的内存中提取的。

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

我想创建一个视图,我将用ajax调用,它只会将csrf_token字符串返回给调用者。

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

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

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

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

提前致谢。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我认为你想要的东西可以用一点点的javascript来实现。

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

您从Cookie中获取csrf令牌并将其设置为响应中的标题,或者在表单上设置csrf字段。

编辑:没关系,我错过了你问题的“静态”部分。它永远不会通过django所以没有csrf cookie。我会得到我的外套!