IMG тег сорсинга AWS S3 не удается - CORB? - PullRequest
0 голосов
/ 26 февраля 2020

Я хочу разместить изображения для веб-проекта в корзине AWS, а затем динамически извлекать их при визуализации HTML. Это доставляет мне гораздо больше хлопот, чем я ожидал.

Вот неприятный тег:

<img src="https://s3.us-east-2.amazonaws.com/ibidnyc/Summer Smith/VERBAL/subsections/Summer-Smith-VERBAL-subtopic-POETRY-fig.jpg" alt="">

Когда я делаю это, я получаю сообщение об ошибке блокировки перекрестного источника (CORB) (в инспекторе; я запускаю Chrome) - очевидно, Chrome в некоторых случаях запрещает ссылки на источники img на других сайтах? Беглый поиск привел меня сюда ( zyst.io / как исправить- aws -s3- chrome -and-safari-cors-on-images ), но я не знаю, как применить это. Кроме того, статья касается CORS, а не CORB (что я считаю более новым?).

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Оказывается, @Brad был прав. В то время как я создал экземпляр корзины как publi c, отдельные изображения, загруженные в указанный контейнер, были по-прежнему приватными.

Смена политики корзины на эту сработала (спасибо h3xed.com! ):

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

Редактирование политики корзины описано здесь.

Спасибо всем участникам!

0 голосов
/ 26 февраля 2020

Вот хороший пост StackOverflow, относящийся к CORB.

В частности, здесь, я думаю, может помочь раздел:

В большинстве случаев заблокированный ответ не должно влиять на поведение веб-страницы, и сообщение об ошибке CORB можно безопасно игнорировать. Например, предупреждение может появляться в тех случаях, когда тело заблокированного ответа уже было пустым или когда ответ должен был быть доставлен в контекст, который не может его обработать (например, документ HTML, такой как 404 страница ошибки доставляется в тег <img>).

https://www.chromium.org/Home/chromium-security/corb-for-developers

Попробуйте очистить кэш и убедиться, что данные, возвращенные из этого AWS ссылка - это действительно изображение, а не другой тип данных. Когда я открыл эту ссылку AWS в своем браузере, я получил страницу с ошибкой XML, а не изображение:

<Error>
    <Code>PermanentRedirect</Code>
    <Message>
       The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
    </Message>
    <Endpoint>s3.amazonaws.com</Endpoint>
    <Bucket>ibidnyc</Bucket>
    <RequestId>FF65E772274735DF</RequestId>
    <HostId>
        VW+SBil/6NVWG5lx0F1XmWSDJLTjwaTHbBPoVQQlDNV+71NY4eDQLJraGtM+pBSyjas3ByFKIis=
    </HostId>
</Error>

При исследовании этой ошибки XML я обнаружил, что вполне вероятно, что эта корзина был создан в другом регионе, ienot us-east-2. Это единственный раз, когда я видел эту ошибку конечной точки.

Стандарт США - us-east-1

После изменения вашего URL на us-east-1, я Теперь получим ошибку AccessDenied, поэтому я предполагаю, что изображение было найдено, и вы сможете получить к нему доступ.

<Error>
    <Code>AccessDenied</Code>
    <Message>Access Denied</Message>
    <RequestId>19E4B33430F54214</RequestId>
    <HostId>
        MF/m6yUhslgB3aB3ddoqnKwRAeABQq17wkaIqX09hwrvaZ+jPm8oIEVAY9HQpG5MShOp1Jf/HIg=
    </HostId>
</Error>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...