Получение S3 всегда включать заголовок Vary в свой ответ

У меня есть заголовки CORS, настроенные на S3, и когда браузер делает запрос CORS (то есть включает Origin S3 добавляет все правильные заголовки к ответу, включая Vary заголовок. Однако, если запрос не включает Origin заголовок, ответ не включает Vary заголовок, который оставляет промежуточные кэши (такие как CDN) свободными для кэширования ответа и его обслуживания при поступлении более позднего запроса, даже если этот более поздний запрос добавляет Origin заголовок.

Как я могу получить S3, чтобы всегда возвращать Vary заголовок?

1 ответ

Решение

Почему это многословно, но короткий ответ: вы не можете. Во всяком случае, в настоящее время.

[TL; DR]

В S3 Vary не настраиваемый пользователем заголовок. Хотя S3 может доставлять заголовки CORS, CloudFront не имеет явной поддержки для него.

Если вашей конечной целью является доставка содержимого с поддержкой CORS из CloudFront с использованием S3 в качестве источника, я решил обойти эту проблему, развернув приложение, расположенное между S3 и CloudFront, которое проксирует запросы и всегда добавляет правильные заголовки CORS в Ответ S3, так что CloudFront кэширует правильные данные.

Плюсы:

  • CloudFront кэширует заголовки ответа CORS вместе с данными S3.
  • CloudFront продолжает работать со 100% производительностью.
  • Прокси-приложение очень маленькое и может быть запущено на t1.micro.

Минусы:

  • Не так просто, как S3+CloudFront, правильно работающий вместе для запросов CORS.
  • Написание и развертывание приложения.
Другие вопросы по тегам