"No se encontró la etiqueta meta Content-Security-Policy."error en mi aplicación phonegap


Después de actualizar Cordova 5.0 en mi sistema, creo nuevas aplicaciones. Cuando probé mi aplicación en un dispositivo esa vez me sale un error en el registro de la consola:

No Content-Security-Policy meta tag found.
Please add one when using the Cordova-plugin-whitelist plugin.: 23.

Agrego meta en la sección principal

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src: 'self' 'unsafe-inline' 'unsafe-eval'>

Pero de nuevo, obtuve el mismo error, en la aplicación uso el complemento del navegador dentro de la aplicación y 7 de otros enlaces a sitios web.

Author: Manikandan C, 2015-05-13

5 answers

Después de agregar el cordova-plugin-whitelist, debe decirle a su aplicación que permita el acceso a todos los enlaces de páginas web o enlaces específicos, si desea mantenerlo específico.

Simplemente puede agregar esto a su configuración .xml , que se puede encontrar en el directorio raíz de su aplicación:

Recomendado en la documentación:

<allow-navigation href="http://example.com/*" />

O:

<allow-navigation href="http://*/*" />

De la documentación del plugin:

Lista blanca de navegación

Controla a qué URL se puede navegar la WebView en sí. Se aplica a navegación de nivel superior solamente.

Peculiaridades: en Android también se aplica a iframes para esquemas no http(s).

De forma predeterminada, solo se permiten las navegaciones a las URLs file://. Permitir otras otras URL, debe agregar etiquetas a su config.xml:

<!-- Allow links to example.com -->
<allow-navigation href="http://example.com/*" />

<!-- Wildcards are allowed for the protocol, as a prefix
     to the host, or as a suffix to the path -->
<allow-navigation href="*://*.example.com/*" />

<!-- A wildcard can be used to whitelist the entire network,
     over HTTP and HTTPS.
     *NOT RECOMMENDED* -->
<allow-navigation href="*" />

<!-- The above is equivalent to these three declarations -->
<allow-navigation href="http://*/*" />
<allow-navigation href="https://*/*" />
<allow-navigation href="data:*" />
 86
Author: Keval,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-04 20:48:04

Debes agregar una meta etiqueta CSP en la sección head de index.html

Según https://github.com/apache/cordova-plugin-whitelist#content-security-policy

Política de Seguridad de Contenido

Controla qué solicitudes de red (imágenes, XHRs, etc.) se permiten realizar (a través de webview directamente).

En Android e iOS, la lista blanca de solicitudes de red (ver más arriba) no es capaz de filtrar todo tipo de solicitudes (por ejemplo, <video> & WebSockets son ni bloqueado). Por lo tanto, además de la lista blanca, debe utilizar un Política de Seguridad de Contenido <meta> etiqueta en todas tus páginas.

En Android, el soporte para CSP dentro del sistema webview comienza con KitKat (pero está disponible en todas las versiones usando Crosswalk WebView).

Aquí hay algunos ejemplos de declaraciones CSP para sus .html páginas:

<!-- Good default declaration:
    * gap: is required only on iOS (when using UIWebView) and is needed for JS->native communication
    * https://ssl.gstatic.com is required only on Android and is needed for TalkBack to function properly
    * Disables use of eval() and inline scripts in order to mitigate risk of XSS vulnerabilities. To change this:
        * Enable inline JS: add 'unsafe-inline' to default-src
        * Enable eval(): add 'unsafe-eval' to default-src
-->
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com; style-src 'self' 'unsafe-inline'; media-src *">

<!-- Allow requests to foo.com -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self' foo.com">

<!-- Enable all requests, inline styles, and eval() -->
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">

<!-- Allow XHRs via https only -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self' https:">

<!-- Allow iframe to https://cordova.apache.org/ -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; frame-src 'self' https://cordova.apache.org">
 37
Author: tomtastico,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-22 14:49:32

Hay errores en tu meta etiqueta.

Tuyo:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src: 'self' 'unsafe-inline' 'unsafe-eval'>

Corregido:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"/>

Tenga en cuenta los dos puntos después de "script-src", y la doble comilla final de la etiqueta meta.

 23
Author: Kae Verens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-21 13:53:14

Para mí fue suficiente reinstalar lista blanca plugin:

cordova plugin remove cordova-plugin-whitelist

Y luego

cordova plugin add cordova-plugin-whitelist

Parece que la actualización de las versiones anteriores de Cordova no fue exitosa.

 2
Author: Maxim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-26 19:05:41

Para mí el problema era que estaba usando versiones obsoletas de las plataformas cordova android y ios. Para actualizar a [email protected] y [email protected] resuelto.

Puede actualizar a estas versiones específicas:

cordova platforms rm android
cordova platforms add [email protected]
cordova platforms rm ios
cordova platforms add [email protected]
 1
Author: Pierre-Alexis de Solminihac,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-25 21:56:43