Скрипт API Google Maps загружается из-за политики безопасности контента
Я делаю расширение Google Chrome, где я хочу использовать карты Google. Проблема в том, что когда я запускаю свой скрипт, он выдает мне эту ошибку
Refused to load script from 'https://maps.googleapis.com/maps/api/js?key=XXXXXXXXXXXXXXXX&sensor=false' because of Content-Security-Policy.
Вот мой файл манифеста
{
"name": "Name",
"version": "1.0",
"manifest_version": 2,
"background": {
"scripts": [
"js/script.js"
]
},
"description": "Desc",
"browser_action": {
"default_icon": "images/icon.png",
"default_title": "Title",
"default_popup": "html/popup.html"
},
"permissions": [
"http://*/",
"http://*.google.com/",
"http://localhost/*"
],
"content_security_policy": "script-src 'self' http://google.com; object-src 'self'"
}
И я добавляю свои сценарии, как это
<script src="../js/libs/jquery.js"></script>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=XXXXXXXXXXXXXX&sensor=false"></script>
<script src="../js/plugins/easing.js"></script>
<script src="../js/script.js"></script>
Почему я получаю эту ошибку снова и снова? Пожалуйста помоги...
Обновить один
Я добавил эти два разрешения в файл манифеста, но все еще не работает
"https://maps.google.com/*",
"https://maps.googleapis.com/*",
Обновление два
Я также использовал этот тип content_security_policy
"content_security_policy": "default-src 'none'; style-src 'self'; script-src 'self'; connect-src https://maps.googleapis.com; img-src https://maps.google.com"
Но выше у меня тоже не работает
3 ответа
Я думаю, что проблема в том, что вы неправильно установили политику безопасности контента для URL Карт Google. Вы должны изменить свой "content_security_policy" в файле манифеста на что-то вроде этого:
"content_security_policy": "script-src 'self' https://maps.googleapis.com https://maps.gstatic.com; object-src 'self'"
Это просто означает, что вы разрешаете запускать скрипт с собственной / текущей страницы и с "https://maps.googleapis.com".
Попробуйте это, и посмотрите, поможет ли это.
У меня была та же проблема, и я решил заменить URL-адрес API с http на версию https.
В HTML из:
<script type='text/javascript' src='http://maps.google.com/maps/api/js?v=3.3&sensor=false'></script>
Для того, чтобы:
<script type='text/javascript' src='https://maps-api-ssl.google.com/maps/api/js?v=3.3&sensor=false'></script>
Затем добавил https://maps-api-ssl.google.com/ в CPS в manifest.json
Я не знаю, нужна ли вам эта информация. Но я гуглил и проводил некоторое время, но не мог найти прямой ответ, поэтому я написал здесь, чтобы надеяться, поможет ли он кому-нибудь.
Политика безопасности контента защищает вас от атак XSS. Но это означает, что вам нужно явно занести в белый список внешние ресурсы. Вы можете сделать это, предоставив дополнительные заголовки HTTP или <meta>
пометить как:
<meta http-equiv="Content-Security-Policy"
content="default-src 'self' data: gap: ws: ;
style-src 'self' https: *.googleapis.com;
script-src 'self' https: *.googleapis.com;
media-src 'none';
font-src *;
connect-src *;
img-src 'self' data: content: https: *.googleapis.com;">