diff options
author | Andrew White <pixeltrix@users.noreply.github.com> | 2017-11-27 08:15:46 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-27 08:15:46 +0000 |
commit | afc2b424e27fe48f83d5d1be73a8fadc38499c0c (patch) | |
tree | b62113aebad00db0899fccdbd36c28c23a6be264 /actionpack/lib/action_controller | |
parent | 7ce8a6af1b8fdbc9ee553bda3fd725bea169c2f3 (diff) | |
parent | 456c3ffdbe37d430c12ad269514674cc89f38c11 (diff) | |
download | rails-afc2b424e27fe48f83d5d1be73a8fadc38499c0c.tar.gz rails-afc2b424e27fe48f83d5d1be73a8fadc38499c0c.tar.bz2 rails-afc2b424e27fe48f83d5d1be73a8fadc38499c0c.zip |
Merge pull request #31162 from rails/add-csp-config
Add DSL for configuring Content-Security-Policy header
Diffstat (limited to 'actionpack/lib/action_controller')
-rw-r--r-- | actionpack/lib/action_controller/base.rb | 1 | ||||
-rw-r--r-- | actionpack/lib/action_controller/metal/content_security_policy.rb | 26 |
2 files changed, 27 insertions, 0 deletions
diff --git a/actionpack/lib/action_controller/base.rb b/actionpack/lib/action_controller/base.rb index b73269871b..204a3d400c 100644 --- a/actionpack/lib/action_controller/base.rb +++ b/actionpack/lib/action_controller/base.rb @@ -225,6 +225,7 @@ module ActionController Flash, FormBuilder, RequestForgeryProtection, + ContentSecurityPolicy, ForceSSL, Streaming, DataStreaming, diff --git a/actionpack/lib/action_controller/metal/content_security_policy.rb b/actionpack/lib/action_controller/metal/content_security_policy.rb new file mode 100644 index 0000000000..48a7109bea --- /dev/null +++ b/actionpack/lib/action_controller/metal/content_security_policy.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +module ActionController #:nodoc: + module ContentSecurityPolicy + # TODO: Documentation + extend ActiveSupport::Concern + + module ClassMethods + def content_security_policy(**options, &block) + before_action(options) do + if block_given? + policy = request.content_security_policy.clone + yield policy + request.content_security_policy = policy + end + end + end + + def content_security_policy_report_only(report_only = true, **options) + before_action(options) do + request.content_security_policy_report_only = report_only + end + end + end + end +end |