Нарушение директивы политики безопасности контента в Cloudfront и S3

#html #amazon-s3 #amazon-cloudfront #content-security-policy

Вопрос:

Я пытаюсь загрузить веб-страницу, которая сохранена в AWS S3 и использует Cloudfront для загрузки из моего домена. Я получаю сообщение об ошибке ниже:

 Refused to load media from 'https://www.example.com/video.mp4' because it violates the following Content Security Policy directive: "default-src 'none'". Note that 'media-src' was not explicitly set, so 'default-src' is used as a fallback.
 

У меня есть следующие заголовки на странице, которые я могу видеть через браузер

 <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
<meta http-equiv="Content-Security-Policy" content="default-src 'self'">
<html>
<!-- <script src="screen.js"></script> -->
 

Похоже, что Политика безопасности контента игнорируется?

Я получаю ту же ошибку в Chrome и Firefox.

Комментарии:

1. Мне удалось заставить его работать, но я не совсем понимаю, почему. Я полагаю, что была функция lambda@edge, которая перезаписывала заголовок. Это можно найти в разделе Cloudfront>Дистрибутивы>>…>>>Поведение ->>>> Ассоциации функций. После его удаления я не смог найти функцию lamda@edge, поэтому не смог проверить, в чем проблема.

2. Причина была в lambda@edge функции — она не перезаписывала ваши мета-теги, а добавляла второй CSP через HTTP-заголовок. В случае 2 CSP применяются самые строгие правила из обеих политик, поэтому CSP в метатеге не может смягчить CSP, опубликованный lambda@edge . Вы должны использовать одну из двух вещей: либо мета-тег, либо lambda@edge функцию для доставки политики.

Ответ №1:

Спасибо Гранти за ответ на этот вопрос в комментариях выше.

Проблема заключалась в том, что лямбда@edge добавлял второй CSP через HTTP-заголовок. В случае 2 CSP применяются самые строгие правила из обеих политик, поэтому CSP в метатеге не может смягчить CSP, опубликованный lambda@edge. Вы должны использовать одну из двух вещей: либо мета-тег, либо функцию lambda@edge для доставки политики