Ruby 警告:Can';t在API开发的情况下验证CSRF令牌的真实性
我现在正在用RubyonRails开发webAPI。当Rails应用程序在没有任何csrf令牌的情况下接收POST请求时,将出现以下错误消息。因为应用程序没有视图Ruby 警告:Can';t在API开发的情况下验证CSRF令牌的真实性,ruby,ruby-on-rails-3,api,token,csrf,Ruby,Ruby On Rails 3,Api,Token,Csrf,我现在正在用RubyonRails开发webAPI。当Rails应用程序在没有任何csrf令牌的情况下接收POST请求时,将出现以下错误消息。因为应用程序没有视图 WARNING: Can't verify CSRF token authenticity 所以我的问题是,在这种情况下,我如何安全地逃避csrf令牌检查 非常感谢您。您可以通过添加 skip_before_filter :verify_authenticity_token 到你的控制器。这样,所有进入控制器的请求都会跳过:ve
WARNING: Can't verify CSRF token authenticity
所以我的问题是,在这种情况下,我如何安全地逃避csrf令牌检查
非常感谢您。您可以通过添加
skip_before_filter :verify_authenticity_token
到你的控制器。这样,所有进入控制器的请求都会跳过:verify_authenticity_token过滤器。对于rails 4,它应该是
skip_before_action :verify_authenticity_token, only: [:one_or_two_actions_here]
请注意,您应该避免跳过控制器所有操作上的verify_Authentity_token,而应使用选项
only
仅在需要的地方跳过 这个解决方案有什么缺点吗?这是API的默认操作吗?在application_controller中有一个API“提示”:#对于API,您可能希望改用:null_session。
是的,如果您的应用程序仅在浏览器中运行,删除该提示将允许跨站点请求伪造,对于绑定到Rails视图的JSON API,我建议您使用CSRF保护。但对于移动客户端或其他与Rails应用程序分离的应用程序所使用的API,这应该关闭。最后,protect\u from\u forgery with::null\u session
本质上说,当未经验证的请求进来时,它不应该完全重置会话。因此,对于下一个已验证的请求,会话将出现。处理未经验证的请求有多种选择。我的应用程序只能通过移动客户端的JSON访问。所以没有浏览器,没有html视图。我想我现在明白了,谢谢!我的问题可以通过下面过去的问答来解决。这可能对你有帮助!看一看。