首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CSRF验证失败,但仅使用IE9

CSRF验证失败,但仅使用IE9
EN

Stack Overflow用户
提问于 2011-09-16 16:16:24
回答 3查看 5.1K关注 0票数 6

我已经按照Django docs (使用Django1.3)中的描述设置了CSRF。它适用于FF和Safari,但在IE9上我得到

代码语言:javascript
运行
复制
<div id="summary">
<h1>Forbidden <span>(403)</span></h1>
<p>CSRF verification failed. Request aborted.</p>
</div>

在Ajax请求的响应头中,我发现

代码语言:javascript
运行
复制
Set-Cookie  csrftoken=8db3637951243ffb591e6b2d6998ed03; expires=Fri, 14-Sep-2012 08:01:52 GMT; Max-Age=31449600; Path=/

当以正常的形式使用它时,它可以在IE9中工作(即不涉及Ajax )。

我在nginx/1.1.2后面使用Django。

有没有提示我这里遗漏了什么?

EN

回答 3

Stack Overflow用户

发布于 2011-11-03 15:15:56

如果您的表单位于iframe内,则原因可能是IE默认的阻止第三方cookie的策略。你可以

  • 不使用iframe,
  • 将带有iframe的页面放在与主页相同的域下,
  • 使用@csrf_exempt decorator为特定表单禁用CSRF,或者
  • 使用HTTP头告诉浏览器允许第三方cookie(请参见Chase Seibert's excellent explanation of this issue).

中的变通方法#3

Django的ticket #17157建议在文档中添加关于此问题的注释。

票数 3
EN

Stack Overflow用户

发布于 2013-04-12 22:51:28

我也有同样的问题,我的问题是我没有指定表单操作属性。IE显然不允许这样做。

票数 3
EN

Stack Overflow用户

发布于 2015-02-24 20:01:13

在Django的标签#17157 (感谢@akaihola提供的链接)中指出,问题在于Internet Explorer默认阻止第三方cookie。因此,您可以在浏览器设置中为所有站点或仅为您的站点启用第三方cookies。以下是如何在IE 7(来自this link)中做到这一点:

隐私单击"Tools“菜单,然后单击"Internet Options"

  • Select

选项1:为所有站点启用第三方cookie

单击"Third-party cookie“下的"Override automatic cookie handling"

  • Select
  1. ”按钮,然后单击"OK"

选项2:仅为Feedjit.com启用第三方cookies

Cookie单击“Sites”

  1. 添加“

-domain.com”并单击“OK”

  1. 选择“第三方Cookie”下的"Accept“按钮并单击"OK"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7441889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档