Редирект без HTTP Referer

В различного рода работе (партнерки, лендинги и т.п.) нередко возникает вопрос — как переадресовать пользователя на другую веб-страницу, при этом чтобы его браузер не передавал HTTP Referer. В Интернете существует множество сервисов, которые просто заменяют Referer на свой собственный адрес, но это тоже не всегда желаемо. Так как же получить пустой Referer?

Есть один самый надежный путь:
1. Переадресовываем пользователя на HTTPS-адрес.
2. Далее, если целевой адрес HTTP, то переадресовываем туда.
3. Иначе, переадресовываем на наш HTTP-адрес, а оттуда уже на целевой.

Эта схема гарантированно очистит Referer, однако, она достаточно муторная и иногда требует нескольких редиректов.

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

Разумеется, совершить редирект, отослав браузеру заголовок (с кодом 301 или 302, например) не получится, так как браузер в этом случае удержит реферер, но не обнулит его, и даже не изменит. Придется делать решение, совмещающее в себе различные подходы. Итак, сначала я приведу код, а потом — пояснения по нему.

Много комментариев дано прямо в коде, но я поясню поподробнее. В скрипте скомбинировано два разных подхода к переадресации в зависимости от браузера:
1. META-редирект. Хорошо работает в Firefox и IE, очищая поле Referer.
2. Редирект через JavaScript методом программного клика по ссылке с атрибутом rel=»nofollow». Это работает в последних версиях браузеров, основанных на движке WebKit (Chrome, Safari, новая Opera). На случай, если JavaScript отключен, через 3 секунды будет осуществлен META-редирект. Это не очистит поле Referer в перечисленных браузерах, но, как минимум, заменит его и в любом случае осуществит переадресацию.

Вот и все пояснения по этому решению. Надеюсь, кому-то будет полезно.

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*