You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中使用DigitalOcean CDN时URL无签名致访问被拒

解决DigitalOcean Spaces静态资源URL访问被拒问题

你的配置信息如下:

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)
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

生成的无签名URL访问时提示"access denied",核心原因是资源权限为私有,解决方案如下:

  • 修改ACL配置为公开读
    将AWS_DEFAULT_ACL = None替换为:

    AWS_DEFAULT_ACL = 'public-read'
    

    这个设置会让上传的静态资源默认拥有公开读取权限,无签名URL就能正常访问。

  • 验证DigitalOcean Spaces桶权限
    登录DigitalOcean控制台,进入你的allio1桶:

    • 检查桶的权限策略,确保允许对allio-static路径下的资源进行公共读取
    • 确认CDN配置未限制该路径的访问
  • 重新上传静态资源
    修改配置后,执行以下命令重新收集并上传静态资源,确保新资源应用正确的ACL:

    python manage.py collectstatic
    

另外,配置中重复了STATICFILES_STORAGE,建议删除重复行,保持配置简洁。

内容的提问来源于stack exchange,提问作者Aditya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 23:11:14