2016-08-12 1 views
1

Je fais une application avec NW et AngularJS pour faire une application de bureau, ce que je veux, c'est obtenir les fichiers d'un serveur (html, css, js).Comment obtenir un modèle à partir d'une URL distante avec AngularJS

alors je veux faire quelque chose comme le code suivant:

aux.config(function ($routeProvider) { 
    $routeProvider 
     .when('/testInformation/', { 
     templateUrl: 'https://serverName/test.html', 
     controller: 'shipmentInformationController' 
    }).otherwise({ 
     redirectTo: '/' 
    }); 
}); 

Le problème est que quand je lance l'application, il ne reçoit pas le code html du modèle, alors je ne sais pas si cette idée est valide sur AngularJs ou si j'ai besoin de changer la logique de cela pour obtenir le contenu du html.

Je reçois l'erreur

Error: $sce:insecurl Processing of a Resource from Untrusted Source Blocked

Merci pour toute aide.

Répondre

0

Je faisais des recherches sur internet et j'ai trouvé une solution qui fonctionne pour moi.

L'idée est d'ajouter un domaine parce que par AngularJS par défaut soutenir que le même domaine, nous pouvons ajouter une liste blanche avec le « $ sceDelegateProvider » comme le code folowing

.config(function ($sceDelegateProvider) { 

    $sceDelegateProvider.resourceUrlWhitelist([ 
     // Allow same origin resource loads. 
     'self', 
     // Allow loading from our assets domain. Notice the difference between * and **. 
     'https://serverName.com/**' 
    ]); 
}); 

après que lorsque nous fixerons le templateURL, nous pouvons utiliser le serveur distant.

.when('/test1/', { 
     templateUrl: 'https://serverName.com/html/test1.html', 
     controller: 'test1' 
2

Vous ne pouvez pas charger directement du contenu à partir d'un serveur distant en raison des règles Cross-Origin Resource Sharing. Une solution de contournement relativement simple consiste à proxy le contenu en utilisant quelque chose comme Nginx pour faire croire que cela vient de votre propre serveur.

Si vous avez le contrôle sur le serveur distant, vous pouvez simplement ajouter un en-tête Access-Control-Allow-Origin.