使用するルートに応じて、Ruby-on-Rails アプリで異なる CSP ポリシーを取得することは可能ですか?特定のルートには config.csp = SecureHeaders::OPT_OUT が必要ですが、他のルートには正確な CSP が必要です。
正確にはルートごとではありませんが、Rails 7.0 以降を使用している場合は、コントローラー レベルでグローバル設定をオーバーライドできます。例:
class PostsController < ApplicationController
content_security_policy do |policy|
policy.base_uri "https://www.example.com"
end
end
または完全に無効にします。
class PostsController < ApplicationController
content_security_policy false, only: :index
def index; end
end
Rails 6.0以降でも可能のようですが、それ以前のバージョンについては知りません。
多くの例を含む Rails ドキュメント: https://translate.google.com/translate?hl=ja&sl=en&tl=ja&u=https://guides.rubyonrails.org/security.html#content-security-policy-header
メソッドの API ドキュメント: https://api.rubyonrails.org/classes/ActionController/ContentSecurityPolicy/ClassMethods.html#method-i-content_security_policy