我已经按照中所述设置了 CSRFDjango 文档 https://docs.djangoproject.com/en/dev/ref/contrib/csrf/(使用 Django 1.3)。它适用于 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=/
当以普通表单(即不涉及 Ajax)使用它时,它可以在 IE9 中工作。
我在 nginx/1.1.2 后面使用 Django。
我在这里缺少什么提示吗?
如果您的表单位于 iframe 内,可能的原因是 IE 阻止第三方 cookie 的默认策略。你可以
- 不使用 iframe,
- 将 iframe 页面置于与主页相同的域下,
- 使用以下命令禁用该特定表单的 CSRF@csrf_exempt 装饰器 https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#django.views.decorators.csrf.csrf_exempt, or
- 使用 HTTP 标头告诉浏览器允许第三方 cookie(请参阅Chase Seibert 对这个问题的精彩解释 http://bitkickers.blogspot.com/2011/06/django-csrf-verification-failed-in-ie.html).
姜戈的门票#17157 https://code.djangoproject.com/ticket/17157建议在文档中添加有关此问题的注释。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)