CDN URL은 csp script src에 추가해야 합니다

다음과 같은 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)가 아닌 재시작(restart)만 수행했습니다. CDN 설정을 변경할 때 rake assets:precompile을 실행해야 하나요?

음, 이건 정상적으로 작동해야 합니다. CSP는 S3의 특정 폴더를 화이트리스트에 추가하고, 스크립트가 로드되는 CDN을 가져오도록 설정되어 있어야 합니다.

페이지와 함께 Discourse가 어떤 CSP를 보내고 있나요? 서브폴더 설치 환경인가요?

그 부분을 이해한 것 같습니다. rake assets:precompile이 생성하는 정적 자산(static assets)에 포함된 CSP를 말씀하시는 건가요? (그런데 왜 설정에 추가하면 해결된다는 건지 궁금합니다.)

그 질문에 대한 정석적인 답변을 얻는 방법을 정확히 모르겠습니다.

서브폴더가 아닙니다. 꽤 표준적인 설치 환경이지만, 앞에 traefik 리버스 프록시가 있습니다.

curl -I https://discourse.example.com/ 또는 Chrome 인스펙터를 사용해 Content-Security-Policy 헤더의 내용을 확인하세요.