在Rails3应用程序中设置默认标题

时间:2019-10-31 09:18:54

标签: ruby ruby-on-rails-3

我知道您可以在config/application.rb中为Rails4 +应用程序设置默认的标头应用程序范围,但是在旧版本的Rails中(如Rails3)可以接受的方法是什么?

此刻,我在application_controller.rb中将它们设置为before_filter方法,但是我认为这是不好的做法和性能 -影响

https://edgeguides.rubyonrails.org/security.html?utm_source=twitterfeed&utm_medium=twitter#default-headers

1 个答案:

答案 0 :(得分:1)

在Rails 3中,过滤器似乎是正确的方法。但是,您可能可以用猴子来修补它。您可能需要检查是否已更改。但是looking at this code在3.2稳定版上,您可以在此处设置标题。即使这可行,也可能不会对性能产生任何影响。

您可以尝试将其放在以下的猴子补丁中:

# config/initializers/monkey_patch_headers.rb
class ActionController::Metal
  def initialize
    @_headers = {
      "Content-Type" => "text/html",
      "Foo" => "bar" # or whatever you want to add
     }
    @_status = 200
    @_request = nil
    @_response = nil
    @_routes = nil
    super
  end
end

现在,在任何控制器操作中,您都应该在@_headers中看到它们。 我不知道这是否会破坏其他任何东西。可能值得一试。