0

我显然可以改变Content-Security-Policyin views/application.rb。我还可以添加不同Content-Security-Policy的开发模式。

我如何Content-Security-Policy为特定的动作/动作使用不同的?

4

1 回答 1

4

Content-Security-Policy是一个 HTTP 标头,因此它与操作相关,而不是视图。

您可以像这样设置全局值apps/web/application.rb

security.content_security_policy '...'

您可以在以下环境中为每个环境设置一个全局值apps/web/application.rb

configure :development do
  security.content_security_policy '...'
end

您可以为给定的操作设置不同的值:

module Web::Controllers::Home
  include Web::Action

  def call(params)
    headers.merge!('Content-Security-Policy' => '...')
  end
end

如果您有许多需要相同异常的操作,您可以执行以下操作:

# apps/web/controllers/csp_rule.rb
module Web::Controllers::CSPRule
  def self.included(action)
    action.class_eval do
      before :set_content_security_policy
    end
  end

  private

  def set_content_security_policy
    headers.merge!('Content-Security-Policy' => '...')
  end
end

您可以在需要的地方包含它。

于 2015-09-18T14:53:32.657 回答