Как настроить конфигурацию S3 CORS AllowedOrigin
таким образом, чтобы динамически эхо-запрос запрашивающего домена в заголовке Access-Control-Allow-Origin
?
В сообщении CORS с CloudFront, S3 и несколькими доменами предлагается установить AllowedOrigin
на <AllowedOrigin>*</AllowedOrigin>
делает это. Однако S3 возвращает Access-Control-Allow-Origin: *
.
Access-Control-Allow-Origin: *
не работает в моем случае, поскольку я использую image.crossOrigin = "use-credentials"
в приложении JavaScript. С помощью этой опции S3 возвращает Access-Control-Allow-Credentials: true
. Перекрестный доступ к изображению затем не выполняется, потому что с использованием шаблона, поскольку разрешенное происхождение в сочетании с учетными данными не разрешено.
Справочная информация о том, почему это необходимо:
В моей настройке доступ к изображениям на S3 должен проходить через наш домен, где для ограничения доступа требуется проверка подлинности, а также проверить, разрешено ли учетной записи доступ к изображениям. Если это так, сервер возвращает перенаправление 302 на URL-адрес S3.
Для работы аутентификации image.crossOrigin = "use-credentials"
необходимо установить так, чтобы запрос удалил мой сервер с необходимыми учетными данными. (Кстати, когда я тестировал Firefox 30.0 и Chrome 35.0.1916.153, если crossOrigin
установлен на anonymous
, учетные данные по-прежнему отправляются, но не в Safari 7.0.4. Согласованное поведение между браузерами можно получить только с помощью use-credentials
.).
Поскольку браузеры прозрачно перенаправляются на URL-адрес S3, также отправляются учетные данные.