我正在使用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
?
答案 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
对于向后兼容性很重要,如果省略则不起作用。