Получение 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.
- Написание и развертывание приложения.