【问题标题】:Rails 3, protect_from_forgery and IE8 problemsRails 3、protect_from_forgery 和 IE8 问题
【发布时间】:2011-07-26 04:02:58
【问题描述】:

我有一个在所有浏览器(Safari、Firefox、IE6、7、8 等)中都能正常运行的 Rails 应用

我有一个新用户,他的 IE8 版本相当锁定,一旦他们尝试访问该应用程序,甚至在他们到达登录页面之前,就会出现 Windows 身份验证提示。如果他们尝试输入已提供的登录详细信息,则会失败。我并不担心它会失败,因为不应该出现身份验证提示。

一旦我从 ApplicationController 中删除了protect_from_forgery,他们就可以正常访问系统了。

我已尝试建议允许使用 cookie 等,但他们仍然遇到问题。有没有人对我们可以看的其他东西有任何建议

只是补充一下。该站点使用大本营风格的子域系统。不确定这是否是一个问题。

【问题讨论】:

    标签: ruby-on-rails authentication protect-from-forgery


    【解决方案1】:

    您使用的是哪个版本的 Rails?您使用的是哪种身份验证框架?

    Rails 3.0.3 和一些较早版本的 Devise 也有同样的行为。我遇到的问题是,在某些情况下,IE8 决定在 HTTP 标头中发送“Accept-Type: */*”,而不是一长串支持的格式。在 Rails/Devise 中的某个地方出现了一些问题,并且返回了 HTTP 身份验证状态。

    我通过升级到 Rails 3.0.5 和 Devise 1.2.rc2 解决了我的问题。

    【讨论】:

    • 我正在运行 Rails 3.0.5 和 Devise 1.1.9
    • 尝试查看提示身份验证的请求的 HTTP 请求标头,看看它是否可能是同一个问题。我使用 Fiddler 来检查请求标头。
    • 感谢您的建议。对于大多数使用 IE8 的人来说,我真的很挣扎。这只是一个特定的客户。
    • 我已经升级到 Devise 1.2.1,这似乎已经解决了这个问题。现在我需要修复 mm-devise 以使用 Devise 1.2.1 :)
    • 太棒了。我确实花了很多时间并没有放弃
    【解决方案2】:

    如果其他人对此仍有问题,我使用的是 Rails 3.0.9 和 Devise 1.2.1,但仍然遇到此问题。我的问题是 IE 不会为带有下划线的子域设置 cookie。有关详细信息,请参阅this answer。所以我改变了我的子域以使用破折号,它现在可以工作了。

    【讨论】:

      猜你喜欢
      • 2014-09-20
      • 2013-09-28
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      • 2019-09-15
      • 2011-06-22
      • 2012-03-23
      相关资源
      最近更新 更多