我按照Django docs(使用Django 1.3)中的描述设置了CSRF。它适用于FF和Safari,但在IE9上我得到了
<div id="summary">
<h1>Forbidden <span>(403)</span></h1>
<p>CSRF verification failed. Request aborted.</p>
</div>
在Ajax请求的响应头中,我找到了
Set-Cookie csrftoken=8db3637951243ffb591e6b2d6998ed03; expires=Fri, 14-Sep-2012 08:01:52 GMT; Max-Age=31449600; Path=/
在普通表格中使用它时,它在IE9中有效(即不涉及Ajax)。
我在nginx / 1.1.2后面使用Django。
任何提示我在这里缺少什么?
答案 0 :(得分:3)
如果您的表单位于iframe内,则可能的原因是IE的默认策略是阻止第三方Cookie。你可以
Django的机票#17157建议在文档中添加关于此问题的说明。
答案 1 :(得分:2)
我遇到了同样的问题,对我来说问题是我没有指定表单操作属性。 IE显然不允许这样做。
答案 2 :(得分:1)
在Django的门票#17157中(感谢@akaihola的链接),它表明问题在于Internet Explorer默认阻止第三方cookie。因此,您可以为所有网站启用第三方Cookie,或仅在浏览器设置中为您的网站启用第三方Cookie。 以下是如何在IE 7(来自this link)中执行此操作:
选项1:为所有网站启用第三方Cookie
OR
选项2:仅为Feedjit.com启用第三方Cookie