gpt4 book ai didi

django - 当所有公共(public)访问都被阻止时,为什么我无法从我的 S3 存储桶中获取图像? 403 Forbidden 但静态文件加载正常

转载 作者:行者123 更新时间:2023-12-02 04:22:51 26 4
gpt4 key购买 nike

我的 Django 网站允许用户上传照片。当 s3 存储桶公开时,媒体内容可以在网站上正常加载。但是,一旦我阻止所有公共(public)访问,内容将不再加载,并显示 403 禁止错误。在我的代码中,我添加了允许验证请求所需的值。没有存储桶策略或任何 CORS 配置。我尝试了博客和教程中的几种不同建议,但似乎没有任何效果。

我有一个具有编程访问权限的用户,并在 heroku 环境中设置了 secret 变量,但仍然出现 403 错误。我已经努力设置 secret 变量,但仍然没有成功。

设置.py

AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')

AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_S3_OBJECT_PARAMETERS = {
'CacheControl': 'max-age=86400',
}

MEDIA_LOCATION = 'MediaStorage'
MEDIA_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, MEDIA_LOCATION)
MEDIA_FILE_STORAGE = 'MediaStorage'

STATIC_ROOT = os.path.join(BASE_DIR, "static")
STATIC_LOCATION = 'static'
STATICFILES_LOCATION = 'StaticStorage'
STATIC_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, STATIC_LOCATION)

django_heroku.settings(locals())

存储后端.py

from storages.backends.s3boto3 import S3Boto3Storage
from django.conf import settings

class StaticStorage(S3Boto3Storage):
location = settings.STATICFILES_LOCATION

class MediaStorage(S3Boto3Storage):
location = settings.MEDIA_FILE_STORAGE
file_overwrite = False
custom_domain = False

所有静态文件都可以正常加载,但媒体文件根本无法加载。我希望在 View 网页中显示文件时加载这些文件。但是我只是收到 403 禁止错误。

最佳答案

在你的settings.py中你有设置吗?

AWS_DEFAULT_ACL = 'public-read'

看这个例子是我所在的巴西州的一个公共(public)项目。

Project

关于django - 当所有公共(public)访问都被阻止时,为什么我无法从我的 S3 存储桶中获取图像? 403 Forbidden 但静态文件加载正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58183446/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com