it-swarm.com.de

Msgstr "Kein Meta - Tag für Inhaltssicherheitsrichtlinien gefunden." fehler in meiner phonegap anwendung

Nach dem Update von Cordova 5.0 in meinem System erstelle ich neue Anwendungen. Wenn ich meine Anwendung dieses Mal auf einem Gerät getestet habe, wird eine Fehlermeldung im Konsolenprotokoll angezeigt:

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

Ich füge Meta im Kopfteil hinzu

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

Aber auch hier habe ich den gleichen Fehler erhalten: In der Anwendung verwende ich das In-App-Browser-Plugin und 7 andere Website-Links.

94
user4809193

Nachdem Sie die cordova-plugin-whitelist hinzugefügt haben, müssen Sie Ihre Anwendung anweisen, den Zugriff auf alle Webseiten-Links oder bestimmten Links zuzulassen, wenn Sie diese spezifisch beibehalten möchten.

Sie können dies einfach zu Ihrer config.xml hinzufügen, die Sie im Stammverzeichnis Ihrer Anwendung finden:

Empfohlen in der Dokumentation:

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

oder:

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

Aus der Dokumentation des Plugins:

Navigations-Whitelist

Steuert, zu welchen URLs das WebView selbst navigiert werden kann. Gilt nur für Navigationen der obersten Ebene.

Quirks: on Android gilt auch für iframes für Nicht-http (s) -Schemata.

Standardmäßig sind nur Navigationen zu file: // URLs zulässig. Um andere URLs zuzulassen, müssen Sie Ihrer config.xml Tags hinzufügen:

<!-- 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
Keval

Sie müssen ein CSP-Meta-Tag in den Kopfbereich Ihrer App einfügen index.html

Gemäß https://github.com/Apache/cordova-plugin-whitelist#content-security-policy

Inhaltssicherheitsrichtlinie

Steuert, welche Netzwerkanforderungen (Bilder, XHRs usw.) (direkt über die Webansicht) gestellt werden dürfen.

Unter Android und iOS kann die Whitelist für Netzwerkanforderungen (siehe oben) nicht alle Arten von Anforderungen filtern (z. B. <video> & WebSockets werden nicht blockiert) Für die Whitelist sollten Sie auf allen Ihren Seiten ein Content Security Policy<meta> - Tag verwenden.

Unter Android beginnt die Unterstützung von CSP in der System-Webansicht mit KitKat (ist jedoch in allen Versionen mit Crosswalk WebView verfügbar).

Hier einige Beispiele für CSP-Erklärungen für Ihre .html - Seiten:

<!-- 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">
38
tomtastico

Ihr Meta-Tag enthält Fehler.

Deine:

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

Korrigiert:

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

Beachten Sie den Doppelpunkt nach "script-src" und das doppelte Anführungszeichen des Metatags.

24
Kae Verens

Für mich hat es gereicht, das Whitelist Plugin zu installieren:

cordova plugin remove cordova-plugin-whitelist

und dann

cordova plugin add cordova-plugin-whitelist

Es sieht so aus, als ob die Aktualisierung von früheren Versionen von Cordova nicht erfolgreich war.

2
Maxim

Für mich war das Problem, dass ich veraltete Versionen der Cordova Android und ios Plattformen verwendete. Ein Upgrade auf [email protected] und [email protected] löste das Problem.

Sie können auf diese spezifischen Versionen aktualisieren:

cordova platforms rm Android
cordova platforms add [email protected]
cordova platforms rm ios
cordova platforms add [email protected]