Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 警告:Can';t在API开发的情况下验证CSRF令牌的真实性_Ruby_Ruby On Rails 3_Api_Token_Csrf - Fatal编程技术网

Ruby 警告:Can';t在API开发的情况下验证CSRF令牌的真实性

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

我现在正在用RubyonRails开发webAPI。当Rails应用程序在没有任何csrf令牌的情况下接收POST请求时,将出现以下错误消息。因为应用程序没有视图

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视图。我想我现在明白了,谢谢!我的问题可以通过下面过去的问答来解决。这可能对你有帮助!看一看。