web-dev-qa-db-fra.com

Politique de sécurité du contenu de Cordova

J'ai une application Cordova et après la mise à niveau (5.0.0), je ne peux appeler aucune ressource. J'ai ajouté le plugin whitelist et ajouté la balise suivante à index.html

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.Azure-mobile.net localhost:1337 *.ajax.aspnetcdn.com">

J'ai eu les erreurs suivantes:

Refus de charger le script " http://ajax.aspnetcdn.com/ajax/mobileservices/MobileServices.Web-1.2.5.min.js " car il enfreint la directive de politique de sécurité du contenu suivante: " script-src 'self' 'unsafe-inline' 'unsafe-eval' * .Azure-mobile.net localhost: 1337 * .ajax.aspnetcdn.com ".

Refus de charger le script ' http: // localhost: 1337/vorlon.js ' car il viole la directive de politique de sécurité du contenu suivante: "script-src 'self' 'unsafe-inline' 'unsafe- eval '* .Azure-mobile.net localhost: 1337 * .ajax.aspnetcdn.com ".

J'ai essayé avec la politique par défaut qui devrait tout autoriser, mais toujours pas de chance.

J'ai également ajouté ce qui suit à mon fichier config.xml

<access Origin="*" />
<allow-navigation href="*" />

et en utilisant les plugins suivants:

C:\Projects\TavlaApp>cordova plugin
com.Microsoft.Azure-mobile-services 1.2.7 "Windows Azure Mobile Services"
cordova-plugin-whitelist 1.0.1-dev "Whitelist"
nl.x-services.plugins.calendar 4.3.4 "Calendar"
nl.x-services.plugins.insomnia 4.0.1 "Insomnia (prevent screen sleep)"
org.Apache.cordova.inappbrowser 0.6.0 "InAppBrowser"

Une idée est quoi essayer?

15
Larsi

Il semble qu'il y ait eu un problème avec mon plugin/plateforme.

J'ai supprimé tous les plugins

   cordova platform rm Android
   cordova platform add Android

Ensuite, réajouté les plugins, et tout fonctionne.

7
Larsi

Les caractères génériques sont acceptés, mais uniquement en tant que schéma, port ou dans la position la plus à gauche du nom d'hôte:

*://*.example.com:* 

... cela correspondrait à tous les sous-domaines de example.com (mais pas example.com lui-même), en utilisant n'importe quel schéma, sur n'importe quel port.

La clé ici, pour vous, pourrait être la partie dans bold ci-dessus.

Vous spécifiez:

localhost:1337

*.ajax.aspnetcdn.com

Mais en appelant

http://ajax.aspnetcdn.com

http://localhost:1337

Peut-être changer pour

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.Azure-mobile.net http://localhost:1337 http://ajax.aspnetcdn.com">

Je spécifie le port, mais vous pouvez remplacer "http" par *

Espérons que cela vous aide ou vous mène dans la bonne direction.

30
Steve Kennedy