Смена http-реферера через редирект - PullRequest
2 голосов
/ 02 сентября 2010

Мы регистрируемся на онлайн-ресурсе, который использует http-referer в качестве аутентификации (я знаю, что это плохая идея), чтобы доказать, что запрос поступил из нашей интрасети (для этого нет IP-адреса, поскольку есть прокси-сервер более высокого уровня) .

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

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

  1. http://intranet/somerandomurl имеет ссылку на
  2. http://intranet/AuthorisedUrl который должен быть ссылкой на
  3. http://externalsite/

Есть ли способ сделать это, не заставляя людей буквально нажимать на ссылку? (Подавляющее большинство браузеров будет IE6 или IE7, если это поможет, если кому-то нужно щелкнуть ссылку, но я могу использовать JS для большинства, у меня все в порядке).

1 Ответ

2 голосов
/ 02 сентября 2010

Поместите этот код в ссылку 2. Для тех, у кого включен JavaScript,

 <script type="text/javascript">

window.location = "http://example.com/"

</script>

Это перенаправит их на http://example.com/, как только будет выполнено.Поместите это как можно раньше в <head>, чтобы перенаправление происходило как можно раньше при загрузке страницы

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

В любом случае, ссылка 2 будет ссылаться на внешний сайт.

(Предупреждение: это действительно очень небезопасный метод аутентификации.)


РЕДАКТИРОВАТЬ: похоже, что существует известная проблема с некоторыми версиями IE, не передающими заголовок Refererпосле перенаправления javascript.Вот обходной путь: http://webbugtrack.blogspot.com/2008/11/bug-421-ie-fails-to-pass-http-referer.html

...