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



我使用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引用缓存的文件,而不需要在url中使用http:,但还没有找到一种方法来生成它。

是否有一种方法来生成manifest.json协议相对url ?

这是一个老问题,但我最近花了很多时间试图解决它。
此配置将使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对于向后兼容性很重要,如果省略它将不起作用。

最新更新