aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/http
diff options
context:
space:
mode:
authorKohei Suzuki <eagletmt@gmail.com>2018-02-18 21:36:59 +0900
committerKohei Suzuki <eagletmt@gmail.com>2018-02-18 23:45:57 +0900
commit53d863d4bbfe279e00433ef3672b040e2e6ef267 (patch)
tree6f059261f4f1a437f07ac038fe5857fdf8e7be76 /actionpack/lib/action_dispatch/http
parent099a28bbecb5b6fdabcae261d22c424f67a21601 (diff)
downloadrails-53d863d4bbfe279e00433ef3672b040e2e6ef267.tar.gz
rails-53d863d4bbfe279e00433ef3672b040e2e6ef267.tar.bz2
rails-53d863d4bbfe279e00433ef3672b040e2e6ef267.zip
Skip generating empty CSP header when no policy is configured
`Rails.application.config.content_security_policy` is configured with no policies by default. In this case, Content-Security-Policy header should not be generated instead of generating the header with no directives. Firefox also warns "Content Security Policy: Couldn't process unknown directive ''".
Diffstat (limited to 'actionpack/lib/action_dispatch/http')
-rw-r--r--actionpack/lib/action_dispatch/http/content_security_policy.rb12
1 files changed, 10 insertions, 2 deletions
diff --git a/actionpack/lib/action_dispatch/http/content_security_policy.rb b/actionpack/lib/action_dispatch/http/content_security_policy.rb
index 4883e23d24..160c345361 100644
--- a/actionpack/lib/action_dispatch/http/content_security_policy.rb
+++ b/actionpack/lib/action_dispatch/http/content_security_policy.rb
@@ -21,7 +21,10 @@ module ActionDispatch #:nodoc:
return response if policy_present?(headers)
if policy = request.content_security_policy
- headers[header_name(request)] = policy.build(request.controller_instance)
+ built_policy = policy.build(request.controller_instance)
+ if built_policy
+ headers[header_name(request)] = built_policy
+ end
end
response
@@ -172,7 +175,12 @@ module ActionDispatch #:nodoc:
end
def build(context = nil)
- build_directives(context).compact.join("; ") + ";"
+ built_directives = build_directives(context).compact
+ if built_directives.empty?
+ nil
+ else
+ built_directives.join("; ") + ";"
+ end
end
private