Как настроить конфигурацию 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, также отправляются учетные данные.