Політика безпеки вмісту: Налаштування сторінки заблокували завантаження ресурсу


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взагалі видалите тег, але це не моє місце робити.
Маннго

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. Ваш поточний CSP у будь-якому випадку є досить слабким (що дозволяє unsafe-inline, unsafe-evalта й default-srcз-поміж *), тому, ймовірно, це не додає занадто великої вартості, чесно кажучи.


5
Це небезпечне рішення - перевірка CSP від ​​Google видає цьому рядку кілька серйозних помилок. (На жаль, впровадження хорошого CSP не є тривіальним, і його потрібно налаштовувати для кожного сайту.)
Freewalker,

7
Я сприймаю питання з цим коментарем. Проблеми з CSP пов’язані з оригінальною CSP. Все, що я зробив, було взяти це та додати до нього www.google.com домен у відповідь на запитання. Чи міг би я запропонувати ще більше посилити CSP, одночасно? Можливо, але я б сказав, що це поза сферою питання. Тим більше, що вже було очевидним, що ОП не знайоме з CSP.
Barry Pollard

3
Зараз CSP "небезпечний"? Це спірно. Дозвіл небезпечного вбудованого та небезпечного оцінювання та джерело * за замовчуванням перешкоджає більшій частині призначення 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'";

Перевірте Політику щодо захисту вмісту. Можливо, вам доведеться додати посилання на джерело.


3
Зверніть увагу, що це небезпечно - цей Content-SecurityPolicy отримує серйозні збої від оцінювача CSP Google .
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");                    


-11

Ви можете вимкнути їх у своєму браузері.

Firefox

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

Chrome

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


79
Ніколи цього НЕ робіть, окрім тимчасової налагодження. Це важлива функція безпеки вашого браузера.
hackel

4
Це виправить лише локально, а крім того, це робить ваш браузер набагато вразливішим.
Ніл Чоудхурі,

3
Це "порада" для тестування / налагодження? Якщо так, його слід зазначити у відповідь, щоб уникнути поширення небезпечних вразливих місць серед несвідомої спільноти людей. До речі, як сказав @NeilChowdhury, це виправить у вашій системі, а як щодо фактичних відвідувачів веб-сайту?
Пт0zenFyr

12
тимчасове рішення, але корисне для налагодження (плюс одне)
NarendraR

4
@hackel Я ЗРОБУ це. Я БУДУ.
ア レ ッ ク ス
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.