Я нашел много решений для различных ситуаций с "отказом в 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:
Btw. '*' - это только подстановочный знак для URL-адресов. данные: 'unsafe-inline' и 'unsafe-eval' нужно добавлять отдельно.