在 django 中使用数字海洋 cdn 的 url 末尾没有签名

问题描述 投票:0回答:1

这是我的配置

AWS_ACCESS_KEY_ID = 'keyid'
AWS_SECRET_ACCESS_KEY = 'accesskey'
AWS_STORAGE_BUCKET_NAME = 'allio1'
AWS_S3_ENDPOINT_URL = 'https://sfo3.digitaloceanspaces.com'
AWS_S3_CUSTOM_DOMAIN = 'allio1.sfo3.cdn.digitaloceanspaces.com'
AWS_DEFAULT_ACL = None
AWS_S3_OBJECT_PARAMETERS = {
'CacheControl': 'max-age=86400',
}
AWS_LOCATION = 'allio-static'


STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

STATIC_URL = '{}/{}/'.format(AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

网址末尾没有签名。例如,这只是普通的网址https://allio1.sfo3.cdn.digitaloceanspaces.com/allio-static/assets/bootstrap/css/bootstrap.min.css网址末尾没有签名,它说访问被拒绝

django cdn django-storage
1个回答
0
投票

我也发现了同样的问题,当定义 AWS_S3_CUSTOM_DOMAIN 并且 AWS_DEFAULT_ACL 为“私有”或“无”时,django-storages 似乎确实不会生成签名。

按照此 django-storages 问题中的建议,您可以:

  1. 省略 AWS_S3_CUSTOM_DOMAIN(或将其设置为 None)
  2. 使用 AWS_S3_SIGNATURE_VERSION = "s3" 以使签名 URL 能够与 CDN 域配合使用。
  3. 稍后在代码中将静态域替换为 CDN URL。

PS。 Digital Ocean 文档中也建议了类似的内容:带有 Spaces CDN 的预签名 URL。

© www.soinside.com 2019 - 2024. All rights reserved.