2016-08-12 72 views
1

我正在使用NW和AngularJS创建桌面应用程序的应用程序,我想要的是从服务器(html,css,js)获取文件。如何使用AngularJS从远程URL获取模板

然后我想要做的事,如下面的代码:

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

的问题是,当我运行它是没有得到模板的HTML应用程序的话,我不知道这种想法是在AngularJs上有效,或者如果我需要改变它的逻辑来获取html的内容。

我收到错误

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

感谢您的帮助。

回答

0

我在互联网上做了一些搜索,我找到了适合我的解决方案。

的想法是添加一个领域,因为在默认情况下angularJs只支持同一个域,那么我们就可以用“$ sceDelegateProvider”添加白名单等之后的是如下因素代码

.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/**' 
    ]); 
}); 

,当我们将设置templateURL,我们可以使用远程服务器。

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

由于Cross-Origin Resource Sharing规则,您无法直接从远程服务器加载内容。

一个比较简单的解决方法是使用类似Nginx的代码来使内容看起来像来自您自己的服务器。

如果您可以控制远程服务器,则可以简单地添加一个Access-Control-Allow-Origin标头。