Могу ли я отследить реферера ссылки нового окна? - PullRequest
8 голосов
/ 12 июля 2011

Корпус:

  • сайт A содержит ссылку, которая открывает сайт B в новом окне.
  • Сценарий на сайте B пытается получить URL-адрес сайта A.

Мой вопрос: есть ли способ отследить реферер нового окна , которое было открыто с помощью функции target="_blank" или Javascript window.open()?

Если да, то есть ли способ полностью скрыть реферера?

Ответы [ 5 ]

5 голосов
/ 12 июля 2011

Referrer находится в заголовке HTTP, поэтому он будет доступен независимо от того, пустое окно или новое.Вы можете получить URL с:

 alert(document.referrer);

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

Обновление

Возможно, это не так неодобрительно, как я думал.HTML5 имеет свойство для <a> не отправлять реферера в заголовках HTTP: rel = "noreferrer".

4 голосов
/ 14 июля 2015

IE с window.open теряет реферер.Просто используйте jQuery или переписайте его без использования jQuery:

$("<form />").attr("action", "url").attr("target", "_blank").appendTo(document.body).submit();
2 голосов
/ 12 июля 2011

Если у вас есть контроль над обеими страницами, откройте окно следующим образом:

var myWindow = window.open('http://my_url', 'title', 'width=500,height=350,top=100,left=100');
if(!myWindow.opener) myWindow.opener = self;

Примечание: важно дать окну заголовок, иначе IE покажет себя.В открывшемся окне у вас будет ссылка на «открывашку»:

alert(opener.window.location);
0 голосов
/ 24 августа 2011

лучший способ это:

    var myWindow = window.open('', 'title', 'width=500,height=350,top=100,left=100');
myWindow.location.href = 'redirect.asp';

Надеюсь, это будет полезно

0 голосов
/ 12 июля 2011

Вы проверяли местоположение открывалки? Это сработало для меня, если я правильно помню.

...