Cuando intenté implementar mi aplicación en dispositivos con un sistema Android superior a 5.0.0 ( Lollipop ), seguía recibiendo este tipo de mensajes de error:
03-07 18:39:21.621: D/SystemWebChromeClient(9132): archivo:///android_asset/www/index.html: Línea 0: Se negó a cargar el script 'http://xxxxx' porque infringe el siguiente contenido Directiva de política de seguridad: "script-src 'self' 'unsafe-eval' 'unsafe-inline'". 03-07 18:39:21.621: I/chromium(9132): [INFO:CONSOLE(0)] "Se negó a cargar el script 'http://xxx' porque infringe la siguiente directiva de Política de seguridad de contenido: "script- src 'self' 'unsafe-eval' 'unsafe-inline'".
Sin embargo, si lo implementé en un dispositivo móvil con sistema Android de 4.4.x ( KitKat ), la política de seguridad funciona con las predeterminadas:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">Entonces pensé, tal vez, debería cambiar a algo como esto:
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-eval' 'unsafe-inline'; object-src 'self'; style-src 'self' 'unsafe-inline'; media-src *">Básicamente, ambas opciones no funcionan para mí. ¿Cómo puedo solucionar este problema?
La auto respuesta dada por MagngooSasa funcionó, pero para cualquier otra persona que intente entender la respuesta, aquí hay algunos detalles más:
Al desarrollar aplicaciones Cordova con Visual Studio, intenté importar un archivo JavaScript remoto [ubicado aquí http://Guess.What.com/MyScript.js], pero tengo el error mencionado en el título.
Aquí está la etiqueta meta anterior , en el archivo index.html del proyecto:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">Aquí está la metaetiqueta corregida , para permitir la importación de un script remoto:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *;**script-src 'self' http://onlineerp.solution.quebec 'unsafe-inline' 'unsafe-eval';** ">¡Y no más errores!
Las respuestas anteriores no solucionaron mi problema, porque no incluyen blob: data: gap: palabras clave al mismo tiempo; así que aquí hay una cadena que hace:
<meta http-equiv="Content-Security-Policy" content="default-src * self blob: data: gap:; style-src * self 'unsafe-inline' blob: data: gap:; script-src * 'self' 'unsafe-eval' 'unsafe-inline' blob: data: gap:; object-src * 'self' blob: data: gap:; img-src * self 'unsafe-inline' blob: data: gap:; connect-src self * 'unsafe-inline' blob: data: gap:; frame-src * self blob: data: gap:;">Advertencia: Esto expone el documento a muchas vulnerabilidades. Asegúrese de evitar que los usuarios ejecuten código en la consola o estén en un entorno cerrado como una aplicación de Cordova .
Se resolvió con:
script-src 'self' http://xxxx 'unsafe-inline' 'unsafe-eval';