CSP script-src に CDN URL を追加する必要があります

以下のように ENV を設定したサイトがあります。

  DISCOURSE_FORCE_HTTPS: true
  DISCOURSE_S3_ACCESS_KEY_ID: 'KEY'
  DISCOURSE_S3_SECRET_ACCESS_KEY: 'SECRET'
  DISCOURSE_BACKUP_LOCATION: 's3'
  DISCOURSE_ENABLE_S3_UPLOADS: true
  DISCOURSE_ENABLE_S3_INVENTORY: false
  DISCOURSE_S3_BACKUP_BUCKET: 'mybucket/backups'
  DISCOURSE_S3_UPLOAD_BUCKET: 'mybucket'
  DISCOURSE_S3_CDN_URL: 'https://mybuckets3.cdn.literatehosting.com'
  DISCOURSE_S3_REGION: 'us-west-1'
  DISCOURSE_BACKUP_WITH_UPLOADS: 'false'
  DISCOURSE_CDN_URL: 'https://mybucket.cdn.literatehosting.com'

s3 cdn url を追加するまでは正常に動作していました。S3 CDN を追加した後、ブラウザが通常の(S3 ではない)CDN へのリクエストを拒否するようになりました。SiteSetting.content_security_policy_script_src= に CDN URL を追加したところ、再び動作するようになりました。これはバグではないでしょうか?これらの ENV 変数を変更した後に再起動は行いましたが、ビルド(rebuild)は行っていません。CDN 設定を変更する際に rake assets:precompile を実行する必要がありますか?

うーん、これは問題なく動作するはずです。CSP は S3 の特定のフォルダとスクリプトが読み込まれる CDN をホワイトリストに登録するよう設定されています。

Discourse はページにどのような CSP を送信していますか?これはサブフォルダへのインストールですか?

「いいね!」 1

その点は理解できました。その CSP は、rake assets:precompile で生成される静的アセットに含まれているのでしょうか?(だとすれば、なぜ設定に追加することで問題が解決するのでしょうか。)

その質問に対する答えを得るための標準的な方法が、残念ながらよくわかりません。

サブフォルダではありません。比較的標準的なインストールですが、その前面にリバースプロキシとして Traefik が配置されています。

curl -I https://discourse.example.com/ または Chrome のインスペクターを使用して、Content-Security-Policy ヘッダーの内容を取得してください。

「いいね!」 2