Запросы к AWS с использованием Django не используют правильные параметры для всех файлов
У меня есть приложение Django, которое при загрузке админки получает только 4 из 6 необходимых статических файлов. Разница между 4 успешными и 2 неудачными запросами в том, что в неудачных запросах отсутствуют следующие параметры:
X-Amz-AlgorithmX-Amz-CredentialX-Amz-DateX-Amz-ExpiresX-Amz-SignedHeadersX-Amz-Signature
Однако параметры присутствуют в заголовках запроса referer. Также это последовательно те же 2 файла. И да, они существуют, о чем я расскажу далее в этом вопросе.
Я установил django-storages и boto3 для работы с AWS.
Вот соответствующие настройки из файла settings.py:
INSTALLED_APPS = [
...
'storages',
...
]
AWS_S3_ACCESS_KEY_ID = 'my-access-key'
AWS_S3_SECRET_ACCESS_KEY = 'my-secret-access-key'
AWS_STORAGE_BUCKET_NAME = 'my-bucket-01'
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_S3_REGION_NAME = 'eu-west-2'
AWS_S3_SIGNATURE_VERSION = 's3v4'
AWS_S3_ADDRESSING_STYLE = "virtual"
Успешный запрос:
https:// my-bucket-01.s3.eu-west-2.amazonaws.com/admin/css/responsive.css? X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=my-access-key%2F20220217%2Feu-west-2%2Fs3%2Faws4_request&X-Amz-Date=20220217T212138Z& X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=31bc0e43fcc693f70c7662432ee6d88d8358652894611a0f7387ac35febf5ef9
Неудачный запрос:
https:// my-bucket-01.s3.eu-west-2.amazonaws.com/admin/css/fonts.css
Failed requests referer:
https:// my-bucket-01.s3.eu-west-2.amazonaws.com/admin/css/base.css? X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=my-access-key%2F20220217%2Feu-west-2%2Fs3%2Faws4_request&X-Amz-Date=20220217T212138Z& X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=af8fb82686dd0dcc2600eebdf9ceecec482dd44be02a3c3f3a9b793f96cee617
Я перешел по ссылке в реферере и она сработала.
Итак, мой вопрос заключается в следующем:
- Почему только некоторые из моих запросов включают правильные параметры и как заставить их использовать правильные параметры?
или
- Как заставить запросы использовать рефереры?