Rails 3:无法验证 CSRF 令牌的真实性

Posted

技术标签:

【中文标题】Rails 3:无法验证 CSRF 令牌的真实性【英文标题】:Rails 3 : Can't verify CSRF token authenticity 【发布时间】:2012-12-11 22:42:10 【问题描述】:

当我尝试通过我的 REST 客户端发布数据时,我收到了这样的警告

Warning :Can't verify CSRF token authenticity.

如何解决。

【问题讨论】:

那看看:***.com/questions/7203304/… 【参考方案1】:

我相信您正在尝试从 link 生成 POST。默认情况下,links 不应该发出 POST 请求,只能发出 GET 请求。因此,当您尝试连接到您的服务器时,Rails 会向您发出警告。 绕过这种行为的一种方法是使用form,而不是使用link。因此,您可以向服务器发出正确的POST 请求。 或者,您可以从application_controller 中删除protect_from_forgery 行,因此Rails 不会进行此类验证,但极不推荐这样做。

【讨论】:

【参考方案2】:

您可以这样做,(但不推荐 :)),跳过防伪保护

例如:您将数据发布到 PostController => 创建操作

class PostsController < ApplicationController

   before_filter :protect_from_forgery, :except => [:create]  

   def create
        #your method
   end
end

但话虽如此,我相信应该有更好的方法来做你想做的事,所以如果你能解释你想做什么,有人可以提供帮助

HTH

【讨论】:

我赞成这个是因为我想知道如何处理这个警告,而不是因为我想跳过它。不要跳过防伪保护!【参考方案3】:

没有

我在 application.js 中错过了以下行

//= require jquery_ujs

我更换了它并且它的工作..

【讨论】:

以上是关于Rails 3:无法验证 CSRF 令牌的真实性的主要内容,如果未能解决你的问题,请参考以下文章

无法验证 CSRF 令牌真实性 Rails 4.1

无法验证 CSRF 令牌的真实性 Rails/React

无法在 Rails 中验证 CSRF 令牌的真实性

Rails post 无法验证 CSRF 令牌的真实性

Rails:发出 POST 请求时无法验证 CSRF 令牌的真实性

Rails用户登录错误:无法验证CSRF令牌的真实性