我在将现有的 django 应用程序与 angular 集成时遇到问题,我已将 Amazon AWS 与 Boto 设置为静态文件,但在使用 AngularJs 时出现此错误:
阻止从 $sceDelegate 策略不允许的 url 加载资源。网址:
所以我调查并尝试这样做:
$sceDelegateProvider.resourceUrlWhitelist(['self',djangoStaticURL]);
在我的模块配置上,但 dopes 似乎不起作用,所以我尝试了:
templateUrl: $sceProvider.trustAsResourceUrl(djangoStaticURL + 'app/views/main.html'),
并获取 $sce provider not defined,这是我的完整模块:
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 做所有的路由吗?还是我缺少什么?
最佳答案
我终于通过像这样编辑 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
关于Django 1.6 + AngularJS v1.2.6 + Amazon Aws,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25655527/