Amazon Cloudfront удаляет заголовок Referer

Я использую Amazon CloudFront для доставки некоторых файлов HDS. У меня есть сервер происхождения, который проверяет HTTP HEADER REFERER, и в случае, если он не разрешен, он блокирует его.

Проблема в том, что облачный фронт удаляет заголовок реферера, поэтому он не пересылается в источник.

Можно ли сказать Amazon не делать этого?

2 ответа

Решение

В сегодняшнем информационном бюллетене Amazon объявил, что теперь можно пересылать заголовки запросов с помощью облачного фронта. Смотрите: http://aws.amazon.com/de/about-aws/whats-new/2014/06/26/amazon-cloudfront-device-detection-geo-targeting-host-header-cors/

В течение нескольких дней после написания ответа ниже были объявлены изменения в Cloudfront. Cloudfront теперь будет проходить через выбранные вами заголовки и может добавлять некоторые собственные заголовки.

Однако многое из того, что я изложил ниже, остается верным. Обратите внимание, что в объявлении предлагается опция пересылки всех заголовков, которая, как я предположил, эффективно отключит кэширование. Существует также возможность пересылки определенных заголовков, что заставит Cloudfront кэшировать объект по всему набору перенаправленных заголовков, а не только по URI, что означает, что эффективность кэша несколько снижена, поскольку у Cloudfront нет другого выбора, кроме как Предположим, что включение заголовка может изменить ответ, который сервер сгенерирует на этот запрос.

Каждый из ваших дистрибутивов CloudFront теперь содержит список заголовков, которые должны быть перенаправлены на исходный сервер. У вас есть три варианта:

None - Эта опция запрашивает оригинальное поведение.

All - Эта опция перенаправляет все заголовки и эффективно отключает все кэширование на границе.

Whitelist - Эта опция дает вам полный контроль над заголовками, которые должны быть перенаправлены. Список начинается пустым и увеличивается по мере добавления новых заголовков. Вы можете добавить общие заголовки HTTP, выбрав их из списка. Вы также можете добавить "пользовательские" заголовки, просто введя имя.

Если вы выбираете Whitelist При этом каждый заголовок, добавляемый в список, становится частью ключа кэша для URL-адресов, связанных с распространением. Добавление заголовка в список просто сообщает CloudFront, что значение заголовка может повлиять на содержимое, возвращаемое исходным сервером.

http://aws.amazon.com/blogs/aws/enhanced-cloudfront-customization/


Cloudfront действительно удаляет Referer Заголовок вместе с несколькими другими, которые не имеют особого значения - или чье присутствие может привести к нелогичным последствиям - в мире кэшированного контента.

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html

Так же, как печенье, если Referer: заголовку было разрешено оставаться таким, чтобы источник мог его видеть и реагировать на него, что означало бы, что объект должен быть кэширован на основе запроса плюс ссылающаяся страница, что, по-видимому, в значительной степени нарушает возможность кэширования объектов. В противном случае, если источник действительно отреагировал на нежелательного реферера и отправил ответы без кэширования, все было бы хорошо до тех пор, пока не поступил первый законный запрос, ответ на который был бы передан последующим запрашивающим независимо от их реферера, также в значительной степени победить цель.

Раздел 13 RFC-2616 требует, чтобы кэш возвращал ответ, который был "проверен на эквивалентность тому, что должен был бы вернуть исходный сервер", и это подразумевает, что ответ будет действительным на основе всех заголовков в запросе.

То же самое относится и к User-agent и другие заголовки, которые сервер источника мог бы использовать для изменения своего ответа... если вам нужно реагировать на эти значения в источнике, есть небольшая очевидная цель для обслуживания их с CDN.

Ссылка на тесты на основе страниц - довольно примитивная мера, как многие люди их используют, поскольку подделывать заголовки очень просто.

Если вы имеете дело с платформой, которую вы не контролируете, и это то, что вам нужно переопределить (с фиктивным значением, просто чтобы сохранить существующую систему "счастливой"), тогда обратный прокси-сервер перед сервером-источником может служить для этой цели с Cloudfront, используя обратный прокси-сервер в качестве источника.

Другие вопросы по тегам