Я нашел много решений для различных ситуаций с «отказом от xyz» из-за настроек Content-Security-Policy.
Однако я не могу найти, что может быть не так, если ''
получает отказ.
Буквальное сообщение об ошибке в браузере:
Refused to frame '' because it violates the following Content Security Policy directive: "frame-src *".
Это происходит только в Chrome. Загрузка страницы в Firefox или Internet Explorer работает нормально.
Я установил следующий CSP (это действительно одна строка. Я добавляю новые строки для удобства чтения):
default-src 'self';
script-src 'self' 'unsafe-inline' 'unsafe-eval';
style-src 'self' 'unsafe-inline';
img-src 'self' data:;
frame-src 'self' *;
object-src 'none';
font-src 'self' data:;
Теперь я понял, что *
означает «все». За что Chrome не проявляет ко мне любви?
Примечание: мы оценили избавление от 'unsafe-inline'
и 'unsafe-eval'
но мы не можем в данный момент. Если это может быть причиной моей проблемы, укажите, как это сделать. В противном случае я понимаю, что это проблема безопасности, и мы работаем над тем, чтобы избавиться от нее. А пока он здесь, чтобы остаться.
Настройка: веб-сервер - это Apache:
# rpm -q httpd
httpd-2.4.6-80.el7.centos.1.x86_64
edit1 Ошибка возникает при попытке открыть почтовую программу клиента с веб-сайта. Пользователь щелкает ссылку, и предполагается, что почтовая программа откроется.
Возможно, поэтому Chrome отображает пустую строку (''
) как заблокированный контент.
Была именно такая проблема сегодня. Я решил это, используя
frame-src data:
Кстати. '*' - это только подстановочный знак для URL-адресов. data: 'unsafe-inline' и 'unsafe-eval' нужно добавлять отдельно.