Скрипт 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;"> 
Другие вопросы по тегам