#amazon-cloudfront #content-security-policy
Вопрос:
Я добавил директиву script-src CSP в свой дистрибутив AWS CloudFront, и мой javascript не будет запускаться. В консоли браузера я вижу следующую ошибку:
Refused to execute inline script because it violates the following Content Security
Policy directive: "default-src 'self' <<LIST OF DOMAINS>>
Either the 'unsafe-inline' keyword, a hash ('sha256-123abc='), or a nonce ('nonce-...') is required
to enable inline execution. Note also that 'script-src' was not explicitly set, so 'default-src' is used
as a fallback.
Однако в моем CSP есть следующий код:
; script-src 'sha256-123abc=' "
Когда я удаляю хэш и использую «self», принимается директива script-src, но таким образом мой скрипт не может быть запущен… кто-нибудь знает, в чем может быть проблема?
Комментарии:
1. (1) Диагностика Chrome иногда вводит в заблуждение (это было исправлено в последней версии). Встроенный сценарий может быть либо
<script>
тегом, либо<tag onclick='...'>
или<a href='javascript:...'>
. Последние два не могут быть решены с помощью `хэш-значения» , но Chrome предлагает разрешить их с помощью хэшей. (2) Вы можете использовать'sha256-123abc='
и'self'
одновременно освещать, почему вы удаляете'self'
, когда добавляете'hash'
? И как вы определяете, являетсяscript-src
директива «подобрана» или нет?
Ответ №1:
Проблема здесь заключалась в том, что дистрибутив CloudFront кэшировал ответ в течение длительного периода времени. Я отключил кэширование, и проблема была решена!