trucos para google depurar debuggear debug consola con comandos chrome abrir javascript google-chrome google-chrome-extension content-security-policy

para - ¿Cómo corregir el error de invocación de JavaScript en línea de la extensión de Chrome?



javascript console chrome (1)

Por defecto , la Política de seguridad del contenido , los scripts en línea no se cargarán y solo se pueden cargar los scripts locales. Usted podría relajar la política predeterminada por:

  1. Script en línea. Eche un vistazo a la Guía oficial , los scripts en línea se pueden incluir en la lista blanca especificando el hash codificado en base64 del código fuente en la política. Ver el uso de hash para elementos para un ejemplo.

    Pero creo que una mejor manera de extraer esta lógica a un script separado y no utilizar el script en línea.

  2. Script Remoto. Puede agregar a la lista blanca los recursos de script https://apis.google.com/js/client.js?onload=handleClientLoad por la siguiente sección en manifest.json

    "content_security_policy":"script-src ''self'' https://apis.google.com; object-src ''self''"

    Además, creo que una mejor manera podría ser descargar el client.js remoto e incluirlo como un script local.

Tenga en cuenta que según la descripción de Inline Script , unsafe-inline ya no funciona.

Hasta Chrome 45, no había ningún mecanismo para relajar la restricción contra la ejecución de JavaScript en línea. En particular, no se aplicará una política de script que incluya "inseguro en línea" .

Estoy haciendo una extensión de Chrome, sin embargo, parece que obtengo el siguiente error cuando intento activar un evento 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:"

y

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.

Este es mi manifiesto.

{ "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''" } }

Cualquier ayuda para corregir este error sería muy apreciada.