web-dev-qa-db-fra.com

Comment puis-je autoriser une application Cordova 6.1 à intégrer une iframe dans iOS à partir d'un site Web?

Jusqu'à ce que je construise récemment, mon application cordova pouvait très bien intégrer une iframe d'un site Web; maintenant, probablement après une mise à jour que j'ai oubliée, la création de l'application entraîne la suppression de l'iframe sur iOS mais fonctionne sur Android.

J'ai ajouté les paramètres suivants à config.xml:

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

Ainsi que la politique de sécurité du contenu suivante:

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

Ce qui devrait permettre à peu près tout. J'ai le plugin cordova-whitelist ajouté, en utilisant cordova 6.1.0 et Ionic 1.7.14

Edit: cela fonctionne réellement sur l'émulateur iOS, mais pas lorsque je l'exécute sur l'appareil.

Edit 2: il semble que ce soit un problème de safari mobile; Je consulte les fichiers sur mon réseau et même en dehors de Cordova, ils ne se chargent pas correctement. Je peux cependant confirmer que cela fonctionnait depuis au moins quelques jours.

11
Phil Barresi

@Phil,
votre application du plugin whitelist est proche, mais échoue probablement car vous avez javascript dans votre index.html. CSP a arrêté de nombreux développeurs. La chose la plus simple à faire est de déplacer tous les Javascript et CSS vers leurs propres fichiers séparés.

Bref, voici une solution largement appliquée:

En remarque, le système whitelist est requis à partir de Cordova Tools 5.0. (21 avril 2015). Pour Phonegap Build, cela signifie que cli-5.1.1 (16 juin 2015)

Ajoutez ceci à votre config.xml

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

NOTEZ VOTRE APP IS MAINTENANT INSÉCURE. IL IS À VOUS DE SÉCURISER VOTRE APP.
Ajoutez ce qui suit à votre 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';">

NOTEZ VOTRE APP IS MAINTENANT INSÉCURE. IL IS À VOUS DE SÉCURISER VOTRE APP.
Cette feuille de travail liste blanche devrait vous aider.
COMMENT APPLIQUER le système Cordova/Phonegap the whitelist

22
JesseMonroy650