Я не уверен, существует ли он уже, но вы могли бы легко написать Filter , который проверяет, есть ли заголовок Referer
, который соответствует соответствующему шаблону (как описано в ссылке, которую вы опубликовали) ).
EDIT:
статья, на которую вы ссылаетесь , описывает правило, основанное на HTTP-заголовке Referer
(который отправляется браузерами, чтобы указать, с какой страницы была получена ссылка).
Следующие правила в .htaccess
для Apache Httpd с mod_rewrite
более или менее означают, что если заголовок Referer
не соответствует шаблону http://(www\\.)?yoursite\\.com
, то перенаправить на /images/hotlink.jpeg
.
RewriteEngine on
RewriteCond %{HTTP_REFERER} .
RewriteCond %{HTTP_REFERER} !^http://(www\\.)?yoursite\\.com [NC]
RewriteRule \\.(gif|jpe?g)$ /images/hotlink.$1 [L]
Фильтры - это стандартный механизм в веб-приложениях для перехвата запросов, прежде чем они отправляются сервлету для обработки (и они могут не перенаправлять их на сервлет, если это необходимо).
Вы бы переопределили doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
в своем фильтре, проверили, соответствует ли request.getHeader("Referer")
правильному шаблону, если это так, вызовите chain.doFilter(request, response)
, в противном случае отправьте ответ о перенаправлении на какое-то другое изображение (которое скажет «горячая ссылка» или что-то еще ), возможно, с кодом состояния 403.