繁体   English   中英

django,在静态页面的表单上设置csrf令牌

[英]django, set csrf token on form in static pages

我有点困惑。 在django模板中设置了csrf令牌

带有标签:

{{csrf_token}}

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

在这种情况下,如何获取csrf_token?

我想到了一个视图,我将使用ajax调用该视图,该视图将简单地将csrf_token字符串返回给调用方。

那是怎么做的? 这会破坏csrf_token安全性吗? 也许有更好的解决方案?

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

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

如何提交表格而不出现csrf错误?

提前致谢。

我认为sligodave链接到正确的文档,但是除了Django中描述的确切过程外,您只需执行一个额外的步骤或获取csrf。 如果使用sure_csrf_token为自己创建一个视图,可以从中获取cookie,则可以使用JS来获取和解析该cookie,然后转过身来在POST上使用它。 由于请求位于同一域中,因此传递请求应该没有任何问题。 我将在安全堆栈中回答这个问题 ,说这种做法没有先天的安全缺陷。

我认为您可以使用一些JavaScript来实现。

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

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

编辑:没关系,我错过了您问题的“静态”部分。 它永远不会通过Django,因此没有csrf cookie。 我去买外套!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM