我想箱子形式蒙山两个提交按钮:Save
,让我们说,和Back to edit
。 (形式是为当前正在编辑的东西预览/确认视图)。
由于显而易见的原因,Save
按钮与价值formaction
和其他按钮post
一个get
属性。对于post
行动的工作,我在表单中通常csrfmiddlewaretoken
。
到目前为止,一切运作良好,唯一的问题是,csrfmiddlewaretoken
值现在包括在GET请求(这似乎气馁出于安全原因)。
目前,我补充一点,查找所有提交按钮与get
行动,并增加了一个单击处理程序,可以消除该领域的csrfmiddlewaretoken
提交之前的一些自定义的javascript。这似乎是一个相当奇怪的和roundabaout的方式来做事。
问:有没有更好/更标准/较稳定的处理这种情况呢?
编辑:为什么我要使用获得某种形式的行动,要求呢?
嗯,我想坚持到规则中使用POST请求(只),对改变数据(在这种情况下,一个重定向响应)的请求。
举个例子,认为一个表单,用户可以编辑(“网页A”)的某些字段,然后按“预览”(一个GET操作),这将导致这里呈现相同的形式“网页B”的,但只读与由系统生成的预览图像。如果用户是幸福的,他们可以按“保存”(一个POST操作),这将真正保存的数据,也可以按“返回”(一个GET动作,类似于浏览器的后退按钮),继续编辑数据。我不会乐意实现这个“后退”操作POST,因为这打乱了实际浏览器后退按钮等互动
在这个简单的例子,一个当然可以要求用户使用浏览器的后退按钮而不是一个表单按钮,或(可能?)使用JavaScript来模拟浏览器的后退。但稍微复杂一点的流量控制一个简单的“回”是不是一种选择。
问题是,你从包含您的GET
令牌形式发送CSRF
请求。我宁愿建议不是PUT
要求GET
请求。该CSRF令牌值未在URL暴露,因为PUT
请求允许通过身体的价值。