Политика безопасности контента: настройки страницы заблокировали загрузку ресурса.

101

Я использую CAPTCHA при загрузке страницы, но она блокируется по какой-то причине безопасности.

Я столкнулся с этой проблемой:

    Политика безопасности контента: настройки страницы заблокировали загрузку
    ресурса на
    http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit
    ("script-src http://test.com:8080 'unsafe-inline' 'unsafe-eval'").

Я использовал следующий JavaScript и метатег:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
<script src="http://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit" async defer></script>
Шакти Шарма
источник
На вашем месте я бы попытался сделать это с помощью серверного кода, а не javascript. JS не очень хорошо работает с CORS и подобными вещами. У Google есть для этого варианты ..
Гоголь
Я добавил javascriptтег к этому вопросу, потому что вопрос не имеет ничего общего с jQuery. Это влияет на любой JavaScript. На самом деле, вопрос был бы более полезным, если бы вы jQueryвообще удалили тег, но это не мое место.
Manngo
1
Теперь удаленный ответ верен. Одна из причин использования «Политика безопасности контента: настройки страницы заблокировали загрузку ресурса» - это то, что JavaScript не включен или не заблокирован (например, NoScript ) в браузере. В этом случае часть вывода ошибки может быть такой: «Не удалось обработать неизвестную директиву 'noscript-marker'» .
Питер Мортенсен

Ответы:

84

Вы сказали, что можете загружать скрипты только со своего собственного сайта (себя). Затем вы попытались загрузить сценарий с другого сайта ( www.google.com ) и не можете этого сделать, поскольку вы ограничили его. В этом весь смысл Политики безопасности контента (CSP).

Вы можете изменить свою первую строку на:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://www.google.com">

Или же, возможно, стоит полностью удалить эту строку, пока вы не узнаете больше о CSP. Ваш текущий СНТ является довольно слабым в любом случае ( с учетом unsafe-inline, unsafe-evalи default-srcиз *), так что это , вероятно , не добавляя слишком много значения, если честно.

Барри Поллард
источник
5
Это небезопасный обходной путь - средство проверки CSP Google выдает в этой строке несколько серьезных сбоев. (К сожалению, реализовать хороший CSP нетривиально, и его нужно настраивать для каждого сайта.)
Freewalker
7
Я не согласен с этим комментарием. Проблемы с CSP связаны с исходным CSP. Все, что сделал этот ответ, - это взять это и добавить к нему домен www.google.com в ответ на вопрос. Мог ли я предложить одновременно ужесточить CSP? Возможно, но я бы сказал, что это выходит за рамки вопроса. Тем более, что уже было очевидно, что ОП не был знаком с CSP.
Барри Поллард
3
Теперь CSP «небезопасен»? Это спорно. Разрешение небезопасных встроенных и небезопасных eval и источника по умолчанию * сводит на нет большую часть цели CSP (поэтому я также предложил удалить его), но следует помнить, что CSP никогда не может ослабить элементы управления браузером, поэтому даже эта политика потери добавление некоторого контроля над страницей, у которой нет CSP - о чем свидетельствует тот факт, что она блокирует скрипт Google! Так что «небезопасный», вероятно, не лучший термин. «Слишком слабо, чтобы быть стоящим», возможно, лучше сформулировать это. Так что да, этот CSP оставляет желать лучшего, но добавление к нему Google не является «небезопасным решением».
Barry Pollard
3
Справедливо, что любой CSP (кроме «все в порядке) будет лучше, чем ничего»
Freewalker
14

Когда мой проект ASP.NET Core Angular запущен в Visual Studio 2019, иногда я получаю это сообщение об ошибке в консоли Firefox:

Политика безопасности содержимого: настройки страницы заблокировали загрузку ресурса во встроенном («default-src»).

В Chrome вместо этого появляется сообщение об ошибке:

Не удалось загрузить ресурс: сервер ответил статусом 404 ()

В моем случае это не имело ничего общего с моей политикой безопасности контента, а было просто результатом ошибки TypeScript с моей стороны.

Проверьте окно вывода IDE на наличие ошибки TypeScript, например:

> ERROR in src/app/shared/models/person.model.ts(8,20): error TS2304: Cannot find name 'bool'.
>
> i 「wdm」: Failed to compile.

Примечание. Поскольку этот вопрос является первым результатом этого сообщения об ошибке в Google.

Дэниел Конгроув
источник
11

У меня был похожий тип ошибки. Сначала я попытался добавить в код метатеги, но это не сработало.

Я обнаружил, что на веб-сервере nginx у вас может быть параметр безопасности, который может блокировать запуск внешнего кода:

# Security directives
server_tokens off;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'  https://ajax.googleapis.com  https://ssl.google-analytics.com https://assets.zendesk.com https://connect.facebook.net; img-src 'self' https://ssl.google-analytics.com https://s-static.ak.facebook.com https://assets.zendesk.com; style-src 'self' 'unsafe-inline' https://assets.zendesk.com; font-src 'self' https://fonts.gstatic.com  https://themes.googleusercontent.com; frame-src https://player.vimeo.com https://assets.zendesk.com https://www.facebook.com https://s-static.ak.facebook.com https://tautt.zendesk.com; object-src 'none'";

Проверьте Content-Security-Policy. Возможно, вам потребуется добавить ссылку на источник.

aCustica
источник
3
Обратите внимание, что это небезопасно - эта Content-SecurityPolicy получает отказы высокой степени серьезности от Google CSP Evaluator .
Freewalker
1

Мне удалось разрешить все мои необходимые сайты с этим заголовком:

header("Content-Security-Policy: default-src *; style-src 'self' 'unsafe-inline'; font-src 'self' data:; script-src 'self' 'unsafe-inline' 'unsafe-eval' stackexchange.com");                    
rubo77
источник
0

Я обошел это, обновив как версию Angular, которую я использовал (с v8 -> v9), так и версию TypeScript (с 3.5.3 -> последняя).

Энтузиаст Scala
источник
1
Какое объяснение?
Питер Мортенсен,
-11

Вы можете отключить их в своем браузере.

Fire Fox

Введите about:configадресную строку Firefox, найдите security.csp.enableи установите для нее значение false.

Хром

Вы можете установить расширение, вызываемое Disable Content-Security-Policyдля отключения CSP.

sendon1982
источник
79
НИКОГДА не делайте этого, кроме временной отладки. Это важная функция безопасности вашего браузера.
hackel
4
Это исправит его только локально и, кроме того, сделает ваш браузер более уязвимым.
Нил Чоудхури
3
Это "совет" по тестированию / отладке? Если так, то это следует упомянуть в ответе, чтобы избежать распространения опасных уязвимостей среди неосведомленного сообщества людей. Кстати, как сказал @NeilChowdhury, это исправит это в вашей системе, а как насчет реальных посетителей сайта?
Fr0zenFyr 03
12
временное решение, но полезно для отладки (плюс один)
NarendraR
4
@hackel Я сделаю это. Я БУДУ.
ア レ ッ ク ス