我在将现有的django应用程序与angular集成时出现问题,我已将Amazon AWS与Boto设置为静态文件,但在使用AngularJs时出现此错误:
Blocked loading resource from url not allowed by $sceDelegate policy. URL:
所以我调查并尝试这样做:
$sceDelegateProvider.resourceUrlWhitelist(['self',djangoStaticURL]);
在我的模块配置上,但似乎没有效果,所以我尝试了:
templateUrl: $sceProvider.trustAsResourceUrl(djangoStaticURL + 'app/views/main.html'),
并且未定义$ sce提供程序,这是我的完整模块:
angular.module('portfolioApp', [
'ngCookies',
'ngResource',
'ngSanitize',
'ngRoute',
'portfolioApp.filters',
]).config(function ($sce ,$routeProvider, $sceDelegateProvider) {
$sceDelegateProvider.resourceUrlWhitelist(['self',djangoStaticURL]);
$routeProvider
.when('/', {
templateUrl: $sce.trustAsResourceUrl(djangoStaticURL + 'app/views/main.html'),
//templateUrl: djangoStaticURL + 'app/views/main.html',
controller: 'MainCtrl'
})
.otherwise({
redirectTo: '/'
});
});
这是一个坏主意吗?我应该从django做所有路由吗?或者有什么东西我不见了?
答案 0 :(得分:2)
我最终通过编辑AWS CORS配置解决了这个问题:
选择静态文件所在的存储桶 选择属性 选择编辑CORS配置
粘贴像这样的东西
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://arlefreak.herokuapp.com/</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>http://*.arlefreak.com/</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
</CORSRule>
</CORSConfiguration>
更多信息:http://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html