Django 1.6 + AngularJS v1.2.6 + Amazon Aws

时间:2014-09-04 00:20:44

标签: django angularjs amazon-web-services static amazon-s3

我在将现有的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做所有路由吗?或者有什么东西我不见了?

1 个答案:

答案 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