【问题标题】:ActionController::InvalidAuthenticityToken exception in safari while using iframe使用 iframe 时 Safari 中的 ActionController::InvalidAuthenticityToken 异常
【发布时间】:2011-10-23 21:04:52
【问题描述】:

虽然我在 safari 中从 iframe 发布了一个表单,但它给出了 Invalid Authenticity Token 异常。如果我尝试不使用 iframe,那么它可以正常工作。

为什么会这样?我该如何解决这个问题?

【问题讨论】:

    标签: ruby-on-rails-3 cookies safari cross-domain p3p


    【解决方案1】:

    真实性令牌是 Rails 用来保护用户免受 CSRF 攻击的一种机制。这是一个很好的解释,取自Understanding the Rails Authenticity Token

    当用户查看要创建、更新或销毁的表单时 一个资源,rails 应用程序会创建一个随机的authentity_token, 将此令牌存储在会话中,并将其放置在 形式。当用户提交表单时,rails 会查找 authentity_token,将其与存储在会话中的进行比较,然后 如果它们匹配,则允许请求继续。

    因此,基本上,对于任何会修改您的模型导轨的操作,都希望验证它是由您发起的更改。

    Rails 做到这一点(通过使用 form_for 或 form_tag 助手)通过将秘密真实性令牌添加到具有如下 html 标签的表单中:<input name="authenticity_token" type="hidden" value="Som3Thin10ngAndUGly">

    回到你的问题:我从来没有使用过 iframe,所以我不确定发生了什么,但我猜你的 iframe 表单没有通过 authencity_token。如果是这种情况,解决方案很简单,只需像上面那样添加一个隐藏输入,然后使用form_authenticity_token 方法设置其值。

    【讨论】:

      猜你喜欢
      • 2019-06-23
      • 2018-11-02
      • 2019-12-25
      • 2011-03-22
      • 2013-09-06
      • 2021-12-20
      • 2017-11-13
      • 2015-05-21
      • 1970-01-01
      相关资源
      最近更新 更多