django - 是否可以禁止公共访问 AWS 文件,但只提供特定的来源?
问题描述
最近我使用AWS S3 存储桶为我的 Django 项目提供静态文件。
这是我的设置:
AWS_ACCESS_KEY_ID = config('AWS_ACCESS_KEY_ID') #
AWS_SECRET_ACCESS_KEY = config('AWS_SECRET_ACCESS_KEY') #
AWS_STORAGE_BUCKET_NAME = 'bucket-name'
AWS_STATIC_LOCATION = 'static'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_S3_OBJECT_PARAMETERS = {
'CacheControl': 'max-age=86400',
}
AWS_LOCATION = 'static'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
STATIC_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
创建存储桶后,我可以看到这些选项默认为 True
但是当我尝试从我的网站 www.my-site.com 或本地 127.0.0.0.1:8000 访问我的静态文件时,它显示 403 权限被拒绝。我想念什么?
Request URL: https://bucket-name.s3.us-east-2.amazonaws.com/static/file-name.js
Request method: GET
Remote address: 52.0.0.0:443
Status code: 403
经过一些搜索,我尝试定义一个 CORS,例如:
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
解决方案
推荐阅读
- java - 如何将 git 子模块与 maven 子模块一起使用?
- java - findMin 懒惰删除二叉搜索树
- php - 如果条件在 php 变量中
- c# - 如何同步声音 | PUN2
- javascript - 如何获得服务器响应火力基地?
- java - 什么是 ?来自Java的布尔值?
- python - Python: pygame - 尝试使用 python 将图像导入 pygame
- python - 网络抓取活动名称、地点、价格
- windows - 将我的服务部署到 azure kubernetes 服务时,总是出现错误“部署 'xxx' 超出其进度期限”
- ios - 将 Apple 收据保存到数据库;将 1 个收据限制为 1 个用户