我显然可以更改Content-Security-Policy
中的views/application.rb
。我还可以为开发模式添加不同的Content-Security-Policy
。
如何针对特定操作/操作使用不同的Content-Security-Policy
?
答案 0 :(得分: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
你可以把它包括在需要的地方。