Отказано в доступе к S3 с CORS для Django на Heroku - PullRequest
0 голосов
/ 12 февраля 2020

Я отправляю файлы c моего приложения Django (развернутого в Heroku) через корзину S3. Перенос файлов на S3 через сборку Heroku работает нормально, файлы попадают в корзину, как и ожидалось. Чтобы получить доступ к файлам, я установил для «Block Publi c Access» значение off и установил конфигурацию CORS следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>http://{{my app}}.herokuapp.com</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

Однако при проверке я продолжаю сталкиваться с ошибками 403 запрос через инструменты Chrome dev в моем приложении. Согласно запросу (см. Ниже) кажется, что в моем запросе отсутствует заголовок Origin. Это то, что вызывает ошибку? Я предполагал, что заголовок Origin будет отправляться автоматически, но как мне установить его вручную?

Кроме того, я уже пытался установить AllowedOrigin в *, но безуспешно.

Заголовок отклоненного запроса:

Accept: text/css,*/*;q=0.1
Accept-Encoding: gzip, deflate, br
Accept-Language: de-DE,de;q=0.9,en-DE;q=0.8,en;q=0.7,en-US;q=0.6
Cache-Control: no-cache
Connection: keep-alive
DNT: 1
Host: magellan-static.s3.amazonaws.com
Pragma: no-cache
Referer: http://{{my app}}.herokuapp.com/
Sec-Fetch-Mode: no-cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36

Единственный способ, с помощью которого работает доступ, - это установить следующую политику Bucket:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::{{my bucket name}}/*"
        }
    ]
}

Хотя это нормально при работе только с файлами stati c CSS и JS, конечно, это не вариант для долгосрочного производства, тем более что мне также нужно / я хочу иметь медиа-файлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...