CSRF验证失败,但仅限于IE9
我已经按照 Django 文档 中所述设置了 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。
我在这里缺少什么提示吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您的表单位于 iframe 内,可能的原因是 IE 阻止第三方 cookie 的默认策略。您无法
Django 的票证 #17157 建议在文档中添加有关此问题的注释。
If your form is inside an iframe, the probable reason is IE's default policy of blocking third-party cookies. You could
Django's ticket #17157 proposes to add a note about this issue in the documentation.
我遇到了同样的问题,对我来说问题是我没有指定表单操作属性。 IE 显然不允许这样做。
I had the same problem, the problem for me was that I did not specify the form action attribute. IE apparantly doesn't allow that.
在 Django 的票证 #17157 (感谢 @akaihola 提供的链接)中,指出问题在于 Internet默认情况下,资源管理器会阻止第三方 cookie。因此,您可以在浏览器设置中为所有网站或仅为您的网站启用第三方 Cookie。
以下是在 IE 7 中执行此操作的方法(来自此链接):
选项 1:为所有站点启用第三方 cookie
或
选项 2:要仅为 Feedjit.com 启用第三方 Cookie,
In Django's ticket #17157 (thanks @akaihola for the link) it's stated that the problem is that Internet Explorer blocks third-party cookies by default. So you can enable third-party cookies for all sites or only for your site in browser settings.
Here is how to do that in IE 7 (from this link):
Option 1: To enable third-party cookies for all sites
OR
Option 2: To enable third-party cookies just for Feedjit.com