2016-03-30 3 views
7

Bis ich vor kurzem gebaut habe, war meine cordova App in der Lage, einen iframe einer Website gut einzubetten; jetzt, vermutlich nach einem update, das ich vergessen habe, die app-ergebnisse in der iframe leer auf iOS, aber funktioniert in Android.Wie kann ich einer Cordova 6.1-App erlauben, einen Iframe von einer Website in iOS einzubetten?

Ich habe die folgenden Einstellungen config.xml hinzugefügt:

<access origin="*"/> <access origin="*.pushwoosh.com" /> <access origin="*.hoby.org" /> <allow-navigation href="*" /> <allow-intent href="*" />

Neben den folgenden Inhalt Sicherheitspolitik:

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

die im Grunde alles erlauben sollte. Ich habe das Cordoba-Whitelist-Plugin hinzugefügt, mit Cordova 6.1.0 und Ionic 1.7.14

Bearbeiten: Es funktioniert tatsächlich auf iOS-Emulator, aber nicht, wenn ich es auf dem Gerät ausführen.

Edit 2: Es scheint, als könnte es eine mobile Safari-Problem sein; Ich sehe die Dateien über mein Netzwerk und sogar außerhalb von Cordova werden sie nicht richtig geladen. Ich kann jedoch bestätigen, dass das zumindest vor ein paar Tagen funktionierte.

+0

Sind Sie sich bewusst, dass Phonegap ist kein [Webserver oder ein Web-Browser] (https://github.com/jessemonroy650/top-phonegap-mistakes/blob/master/new-to-Phonegap.md#005) Ist Ihnen bekannt, dass sowohl [Google als auch Apple die Apps missbilligen] (https://github.com/jessemonroy650/top-phonegap-mistakes/blob/master/new-to-Phonegap.md#005a), die Website-Wrapper sind? – JesseMonroy650

+0

Ich bin mir bewusst, dass es kein Webserver oder Browser ist; und ich bin mir bewusst, dass sie verpönt sind. Was die Kunden verlangen, entspricht jedoch häufig nicht der Realität. –

+0

Okay. Stellen Sie sicher, dass Sie das Geld zuerst bekommen, weil Sie wahrscheinlich nicht in die App "Läden" kommen. Du wirst deine Antwort in Kürze haben. Viel Glück. – JesseMonroy650

Antwort

19

@Phil,
Ihre Anwendung der Plugin ist in der Nähe, aber wahrscheinlich scheitert, weil Sie Javascript in Ihrer index.html haben. CSP hat viele Entwickler gestoppt. Am einfachsten ist es, das gesamte Javascript und CSS in eigene Dateien zu verschieben.

Short kommt, dass hier eine breite Anwendung Lösung:

Als Randbemerkung, die whitelist System wird ab Cordova Tools 5.0.0 (21. April 2015) erforderlich. Für Phonegap Bauen, bedeutet, dass seit cli-5.1.1 (16. Juni 2015)

Fügen Sie diese auf Ihre config.xml

<plugin name="cordova-plugin-whitelist"  source="npm" spec="1.1.0" /> 
<allow-navigation href="*" /> 
<allow-intent href="*" /> 
<access origin="*" /> <!-- Required for iOS9 --> 

HINWEIS IHRE APP JETZT prekär ist. Es liegt an Ihnen, Ihre APP zu sichern.
Fügen Sie den folgenden Code zu Ihrem index.html

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

HINWEIS JETZT INSECURE Ihre App. Es liegt an Ihnen, Ihre APP zu sichern.
Diese Whitelist Arbeitsblatt sollte helfen.
HOW TO apply the Cordova/Phonegap the whitelist system

+0

"HINWEIS, dass Ihre APP JETZT INSECURE ist". Kannst du ein bisschen erklären, was genau das Sicherheitsrisiko ist? –

+0

Unsicherheit kann viele Dinge in Computern bedeuten. Wenn meine App eine strenge Kontrolle über den in der HTML-Datei angezeigten Inhalt hat und mein App-Code das Öffnen externer Links mit JS verhindert, ist es immer noch riskant, einen Platzhalter zu verwenden? Was für eine schlechte Sache könnte genau passieren? irgendein Beispiel? –

+5

Ehrlich gesagt verstehe ich überhaupt nicht, warum Sie so unhöflich sind ... Ja, ich bin nicht sehr erfahren mit der Sicherheit von Cordova-Apps ... und was dann? Ich verdiene es nicht besser zu werden? Vielleicht ist der schlechte Programmierer derjenige, der zu stolz ist, sein eigenes Wissen zu teilen ... –

Verwandte Themen