politicas pagina modificar inicio google extensiones extension depurar debug chrome bloquear acceso javascript html google-chrome google-chrome-extension content-security-policy

javascript - modificar - gpo pagina de inicio chrome



Error de directiva de directiva de seguridad de contenido de extensión de Chrome (4)

Estoy tratando de hacer la extensión de Chrome de la transmisión de radio, pero hay un problema. Cuando ejecuto mi script en el navegador como JS + HTML + CSS normal, funciona, pero cuando intento ejecutarlo como la extensión de Chrome, aparece este error:

Se negó a ejecutar el script en línea porque viola la siguiente directiva de Política de seguridad de contenido: "script-src ''self'' chrome-extension-resource:". Se requiere la palabra clave ''unsafe-inline'', un hash (''sha256 -...'') o un nonce (''nonce -...'') para habilitar la ejecución en línea.

Después de eso agregué esto a mi manifiesto:

"content_security_policy": "script-src ''self'' ''unsafe-eval''; object-src ''self''"

Pero después de eso recibí un mensaje de error (error en la línea de manifiesto con el código de arriba)

Este es mi manifiesto:

{ "background": { "scripts": [ "jquery.js", "jquery-ui.js", "plate.js" ] }, "browser_action": { "default_icon": "Images/action-normal.png", "default_popup": "player.html", "default_title": "" }, "description": "Chrome Player", "manifest_version": 2, "name": "Radio Chrome Player", "permissions": [ "http://www.radio-station.com/" ], "version": "1.0" "content_security_policy": "script-src ''self'' ''unsafe-eval''; object-src ''self''" }

Este es el archivo html principal:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script src="jquery.js"></script> <script src="jquery-ui.js"></script> <script src="main.js"></script> <script>$(function(){$("#radioplayere").plate({playlist: [{file:"http://RADIO_STATION_STREAM_URL/;"}], phpGetter: "http://hostingshoutcast.com/stream/plate/php/plate.php"});});</script> </head> <body> <div id="radioplayer">If you are seeing this then an error has occurred!</div> </body> </html>


La adición de CSP en el archivo manifest.json elimina el error. Funcionó para mi aplicación reaccionar. Supongo que falta '','' es el problema para su código, de lo contrario agregue la línea de abajo y luego intente.

"csp": "script-src ''self'' ''unsafe-inline''; object-src ''self''"

política de seguridad de contenido


Para mí, la razón es que estoy usando una versión anterior (como v1.7) de jQuery que tiene problemas de CSP , elige una nueva versión (v2.1.3).


Sé que llego un poco tarde a esto, pero en base a los comentarios de OP a la respuesta de Xan, otro componente de resolver el problema sería ajustar la llamada AJAX que está implícita.

Recibí el mismo error y ajusté mi llamada a la API para ser:

dataType: ''json''

en lugar de:

dataType: ''jsonp''

(Resuelto el problema, concedido, uno todavía tendrá que eliminar cualquier secuencia de comandos en línea.)


Sus problemas son los siguientes:

  1. Chrome CSP prohíbe el código en línea , y esto no está sujeto a anulación. Chrome no tendrá en cuenta tu ''unsafe-eval'' no ''unsafe-inline'' , y Chrome ignorará la "falta de ''unsafe-inline'' que hubiera ayudado.

    Necesitas deshacerte del código en línea:

    <script>$(function(){$("#radioplayere").plate({playlist: [{file:"http://RADIO_STATION_STREAM_URL/;"}], phpGetter: "http://hostingshoutcast.com/stream/plate/php/plate.php"});});</script>

    Esto necesita ser movido en un archivo js.

  2. Hay un error tipográfico en tu manifest.json, olvidaste una coma:

    "version": "1.0",

    En general, el uso de un validador JSON puede ayudarlo a detectar esos errores.