Django Compressor的manifest.json中的协议相对URL

时间:2014-05-13 15:10:49

标签: django amazon-s3 django-staticfiles django-compressor

我正在使用Django Compressor进行离线压缩,并将压缩的静态文件存储在Amazon S3上。我的问题是manifest.json通过将http://指定为协议来引用缓存文件:

<link rel=\"stylesheet\" 
 href=\"http://stage-media.dropspot-app.com.s3.amazonaws.com/static/CACHE/css/abffb776bf3e.css\" 
 type=\"text/css\" media=\"all\" /><link rel=\"stylesheet\" 
 href=\"http://stage-media.dropspot-app.com.s3.amazonaws.com/static/CACHE/css/9533603cdbaa.css\"     
 type=\"text/css\" media=\"screen\" 
/>

这会导致在通过HTTPS访问页面时未加载缓存文件: The page at 'https://example.com' was loaded over HTTPS, but ran insecure content from 'http://example.com.s3.amazonaws.com/static/CACHE/css/abffb776bf3e.css': this content should also be loaded over HTTPS.

解决方案是让manifest.json引用缓存的文件而不在网址中使用http:,但是还没有办法让它以这种方式生成。

是否有办法使用协议相对网址生成manifest.json

1 个答案:

答案 0 :(得分:1)

这是一个老问题,但我最近花了很多时间试图解决它 此配置将使django-compress在清单和压缩标记中生成协议相对URL:

AWS_S3_SECURE_URLS = False
AWS_QUERYSTRING_AUTH = False
AWS_S3_URL_PROTOCOL = ''
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME

STATIC_URL = "//%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, STATICFILES_LOCATION)

AWS_S3_CUSTOM_DOMAIN对于向后兼容性很重要,如果省略则不起作用。