如何在 Rails 应用程序中关闭 CSRF 保护?

Posted

技术标签:

【中文标题】如何在 Rails 应用程序中关闭 CSRF 保护?【英文标题】:How do I turn off CSRF protection in a rails app? 【发布时间】:2010-09-13 09:23:14 【问题描述】:

Rails 中内置的 CSRF 预防对我们正在进行的一些自动化负载测试造成了一些问题,我想在整个过程中将其关闭。我该怎么做?

【问题讨论】:

【参考方案1】:

我喜欢有明确答案的简单问题。

#I go in application.rb
self.allow_forgery_protection = false

如果您只想为测试执行此操作,您可以将其移至环境文件之一(显然,您将触摸Application 而不是self)。你也可以这样写:

#I still go in application.rb
self.allow_forgery_protection = false unless ENV["RAILS_ENV"] == "production"

详情请参阅here。 (延续 Rails 的优良传统,即在 2 年前的博文中记录核心功能,这些博文是从提交日志中提炼出来的。)

【讨论】:

或简称self.allow_forgery_protection = ENV["RAILS_ENV"] == "production" 得到以下错误 - /home/vipin8169/.rvm/gems/ruby-2.2.1/gems/railties-4.2.0/lib/rails/railtie.rb:196:in method_missing': undefined method allow_forgery_protection=' for FertilityApp::Application:Class (NoMethodError) 【参考方案2】:

在 Rails 3 中,删除 app/controllers/application_controller.rb 中的 protect_from_forgery 命令

【讨论】:

以上是关于如何在 Rails 应用程序中关闭 CSRF 保护?的主要内容,如果未能解决你的问题,请参考以下文章

在rails 3中关闭CSRF令牌

如何在 Rails 中关闭 MySQL 严格模式

在 Rails 中关闭 json 键引用

Rails - 如何向用 javascript 创建的表单添加 CSRF 保护?

Codeigniter CSRF 问题

如何在'rake test'中关闭警告'ruby -w'?