Я размещаю кучу фотографий на Amazon S3, а также запускаю для них Amazon CloudFront. Кроме того, я использую собственное доменное имя. Теперь, если кто-то пытается встроить изображение на другой веб-сайт, я хотел бы показать «Это изображение размещено в домене X» вместо фактического изображения.
Возможно ли это при текущей настройке, которую я описал?
Хорошая это идея или нет, это не вопрос, мне просто нужно посмотреть, возможно ли это вообще.
Cloudfront не поддерживает заголовок реферера, поэтому вы не можете сделать это напрямую. Тем не менее, один из подходов к работе с хотлинками - создание подписанные URL срок действия которых истекает через короткое время. По сути, с динамической страницей вы делаете весь свой контент Cloudfront приватным, а затем используете подписанный URL-адрес для вставки изображения на свою страницу. Подписанный URL-адрес предоставляет доступ к контенту - либо на короткий период времени, либо для определенного IP-адреса. По сути, это делает хотлинкинг непрактичным - так как кому-то придется постоянно очищать ваш сайт на предмет новых, действительных URL-адресов. Конечно, это влияет на кеширование. В качестве альтернативы вы можете сделать URL-адрес действительным в течение немногим более суток и обновлять URL-адрес ежедневно, а не при каждой загрузке страницы.
Если CloudFront поддерживает перезапись запросов на основе Referer:
заголовок, тогда да. Если это не так, тогда вам нужно разместить веб-сервер, который будет между общедоступными и вашими изображениями. Оба Apache / nginx поддерживают это, как и большинство других, о которых я знаю.