gpt4 book ai didi

ruby-on-rails - Rails 5.0.0beta3:开发中的 ActionController::InvalidAuthenticityToken

转载 作者:行者123 更新时间:2023-12-04 23:41:30 25 4
gpt4 key购买 nike

我刚刚在 Rails 5.0.0beta3 上启动了一个带有几个表单的简单应用程序。

在开发中,使用 http://localhost:3000在 Safari 或 Chrome 上访问该应用程序,如果我填写表单并提交,我总是收到 ActionController::InvalidAuthenticityToken错误。
但是,如果我在填写和提交之前重新加载页面,那么它工作正常。

该应用程序使用默认值:

  • protect_from_forgery with: :exception在应用程序 Controller 中,
  • <%= csrf_meta_tags %>在通过应用程序布局的 html 标题中,
  • Rails 创建的开发环境。

  • 例子:
    <%= form_for @node, url: admin_book_nodes_url, as: :node do |form| %>
    <%= render "form", f: form %>
    <p><%= form.submit %> or <%= link_to "Cancel", admin_book_nodes_path %></p>
    <% end %>

    日志:
    Started POST "/admin/book/nodes" for ::1 at 2016-03-20 11:54:31 +0000
    Processing by Admin::Book::NodesController#create as HTML
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"/G5pF6hSPx0Vf21Fi0FCh+VlOcHY4w8C5lmHmwr3NQRjfXUP9/xboybeV3tevmyTyHcwSX8LplU/HgZVGDbGlw==", "node"=>{"parent_id"=>"1", "position"=>"1", "title"=>"lkjlkj", "description"=>"lkjlj", "published"=>"0", "content"=>"lkjlkj"}, "commit"=>"Create node"}
    Can't verify CSRF token authenticity
    Completed 422 Unprocessable Entity in 1ms (ActiveRecord: 0.0ms)

    如果我在 Controller ( self.per_form_csrf_tokens = false )中禁用 per form CSRF token ,它工作正常,所以我的问题确实在那个级别。

    session 似乎没有在任何时候重置。

    有趣的是,当表单第一次加载时,header 的menage 标签中的真实性标记与表单中的标记不同。元标记也位于标题标记的底部。
    当我重新加载元标记和表单中的标记时,元标记是相同的,并且元标记位于标题标记的顶部。

    更新:

    我认为问题归结于 Turbolinks。

    当从应用程序中的另一个页面访问表单页面时,Turbolinks 会触发 XHR 请求,我遇到了这个问题。

    但是,当我重新加载页面时,浏览器会重新加载它,但我没有看到问题。

    最佳答案

    我在 Rails 上提出了一个问题。

    经过进一步调查,问题似乎是由选项 :url 引起的。在 form_for .

    见:Issue #24257 (还没解决)

    关于ruby-on-rails - Rails 5.0.0beta3:开发中的 ActionController::InvalidAuthenticityToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36112939/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com