Ответ 1
Прежде всего, убедитесь, что заголовок Origin
с каждым запросом. Если не отправлен заголовок Origin
, S3 не отправит заголовки access-control
, поскольку S3 считает их несущественными (и, как правило, они есть). Браузер (для которого подразумевается механизм CORS) автоматически отправляет заголовок Origin
при выполнении кросс-начальных HTTP-запросов через XMLHTTPRequest.
В случае загрузки изображений с помощью img
вам нужно добавить атрибут crossorigin="anonymous"
. Видеть
Документация MDN по атрибуту crossorigin. Это приведет к тому, что браузер отправит заголовок запроса Origin
, как это делается с XMLHTTPRequest.
Следуя ответом Сэма Селикова, вам может потребоваться изменить
<AllowedOrigin>http://*</AllowedOrigin>
к
<AllowedOrigin>http://*</AllowedOrigin>
<AllowedOrigin>https://*</AllowedOrigin>
Я не тестировал это.
Идущий Пол Дрейпер комментирует этот ответ: Следите за проблемами кеширования. Браузер может использовать кешированный ответ, который не включает соответствующие заголовки ответов access-control
. Во время разработки вы можете очистить кеш. В процессе производства вы должны перейти на новый URL-адрес ресурса, если раньше он использовался статическим образом.