Как исправить ошибку вызова встроенного JavaScript chrome?

Вопрос:Я делаю расширение chrome, но я, кажется, получаю следующую ошибку, когда пытаюсь запустить событие onclick(). Refused to load the script 'https://apis.google.com/js/client.js?onload=handleClientLoad' because it violates the following Content Security Policy directive: "script-src 'self' blob: filesystem: chrome-extension-resource:" и Refused to execute inline event handler because it violates the following Content Security Policy directive: "script-src 'self' blob: filesystem:

Вопрос:

Я делаю расширение chrome, но я, кажется, получаю следующую ошибку, когда пытаюсь запустить событие onclick().

Refused to load the script ‘https://apis.google.com/js/client.js?onload=handleClientLoad’ because it violates the following Content Security Policy directive: «script-src ‘self’ blob: filesystem: chrome-extension-resource:»

и

Refused to execute inline event handler because it violates the following Content Security Policy directive: «script-src ‘self’ blob: filesystem: chrome-extension-resource:». Either the ‘unsafe-inline’ keyword, a hash (‘sha256-…’), or a nonce (‘nonce-…’) is required to enable inline execution.

Это мой manifest.json:

{ «manifest_version»: 2, «name»: «SECURE», «description»: «this extension offers secure communication for GMAIL users», «version»: «1.0», «browser_action»: { «default_icon»: «resources/icon16.png», «default_popup»: «popup.html», «default_title»: «Click here!» }, «background»:{ «scripts»:[«background.js»] }, «content_scripts»: [ { «matches»: [«http://*/*», «https://*/*»], «js»:[«myscript.js»], «run_at»: «document_end» } ], «permissions»: [«identity», «https://accounts.google.com/*», «https://www.googleapis.com/*»], «oauth2»: { «client_id»: «975410329966.apps.googleusercontent.com», «scopes»: [ «<all urls>», «https://www.googleapis.com/auth/drive», «https://mail.google.com/», «https://www.googleapis.com/auth/gmail.login», «https://www.googleapis.com/auth/gmail.compose», «https://www.googleapis.com/auth/gmail.readonly», «https://www.googleapis.com/auth/gmail.send» ], «content_security_policy»:»script-src ‘self’ ‘unsafe-inline’ ‘unsafe eval’ https://apis.google.com/js/client.js?; object-src ‘self'» } }

Любая помощь в исправлении этой ошибки будет очень оценена.

Ответ №1

По умолчанию Политика безопасности контента, встроенные скрипты не будут загружены и могут быть загружены только локальные script. Вы можете отключить политику по умолчанию:

  • Inline Script. Взгляните на Официальное руководство, встроенные скрипты могут быть включены в белый список, указав хэш-код, основанный на base64 исходного кода в политике. См. Использование хэша для элементов для примера.

    Но я считаю, что лучший способ извлечь эту логику в отдельный script и не использовать inline Script.

  • Удаленный Script. Вы можете использовать белый список script ресурсов https://apis.google.com/js/client.js?onload=handleClientLoad в следующем разделе в manifest.json

    «content_security_policy»:»script-src ‘self’ https://apis.google.com; object-src ‘self'»

    Кроме того, я считаю, что лучший способ – загрузить удаленный client.js и включить его в качестве локального Script.

Обратите внимание, что в описании Inline Script, unsafe-inline больше не работает.

До Chrome 45 не было механизма для ослабления ограничения на выполнение встроенного JavaScript. В частности, политика s etting a script, которая включает в себя “небезопасный-встроенный”, не будет иметь эффекта.

Оцените статью
Добавить комментарий