DigitalOcean Space访问被拒绝且Django静态文件返回403问题求助
解决DigitalOcean Space AccessDenied 403错误方案
你收到的AccessDenied报错属于权限类错误,代表当前请求身份不具备目标资源的访问权限,结合Django站点对接静态存储的场景,按以下步骤排查修复:
- 首先修正访问测试逻辑:Space根域名
https://storagespace.nyc3.digitaloceanspaces.com默认没有公共访问权限,直接访问根域名返回403属于正常情况,你需要测试具体静态资源的完整URL(如https://storagespace.nyc3.digitaloceanspaces.com/static/css/main.css)来判断配置是否生效。 - 配置Space基础访问权限:登录DigitalOcean控制台进入对应Space的设置页,关闭「全局强制私有访问」开关,无需开启公共文件列表功能。
- 修正Django存储配置:如果你使用
django-storages库对接S3兼容存储,在settings.py中添加以下配置,保证上传的静态文件自动设置为公共可读:
AWS_DEFAULT_ACL = 'public-read' AWS_S3_OBJECT_PARAMETERS = { 'CacheControl': 'max-age=86400', } AWS_S3_REGION_NAME = 'nyc3' AWS_S3_ENDPOINT_URL = 'https://nyc3.digitaloceanspaces.com' AWS_STORAGE_BUCKET_NAME = 'storagespace' # 替换为你自己的DigitalOcean Spaces密钥 AWS_ACCESS_KEY_ID = '你的ACCESS_KEY' AWS_SECRET_ACCESS_KEY = '你的SECRET_KEY'
- 配置CORS规则:在Space设置的CORS配置项中新增规则,允许来源填写你的Django站点完整域名,允许方法勾选GET、HEAD,允许请求头填写
*,保存后生效,避免浏览器跨域请求静态资源被拦截。 - 验证密钥权限:确认你使用的Spaces访问密钥具备对应Space的读写权限,如权限异常可重新生成新的Space专属密钥替换现有配置即可。
内容的提问来源于stack exchange,提问作者C-Bizz
相关产品推荐
相关产品推荐

