如何为特定操作覆盖内容安全策略
How to override Content-Security-Policy for a specific action
我显然可以更改 views/application.rb
中的 Content-Security-Policy
。我还可以为开发模式添加不同的 Content-Security-Policy
。
如何为特定的 action/actions 使用不同的 Content-Security-Policy
?
Content-Security-Policy
是 HTTP header,因此它与操作相关,与视图无关。
您可以像这样在 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
您可以在需要的地方添加它。
我显然可以更改 views/application.rb
中的 Content-Security-Policy
。我还可以为开发模式添加不同的 Content-Security-Policy
。
如何为特定的 action/actions 使用不同的 Content-Security-Policy
?
Content-Security-Policy
是 HTTP header,因此它与操作相关,与视图无关。
您可以像这样在 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
您可以在需要的地方添加它。