Установлен ли REFERER, если вы перенаправляете на новую веб-страницу с помощью location.href =? - PullRequest
7 голосов
/ 14 апреля 2011

Если вы перенаправите пользователя на новую веб-страницу с помощью javascript location.href = <url>, какой заголовок REFERER увидит целевой веб-сервер?

Ответы [ 3 ]

8 голосов
/ 14 апреля 2011

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

Таким образом, если посетитель переходит с A.html на B.html и B.html инициирует перенаправление location.href на C.html, веб-сервер увидит B.html в качестве источника ссылки. (Если вы перенаправили с B.html на C.html на стороне сервера, A.html будет ссылаться на C.html.)

Более старые версии Internet Explorer отправит пустой заголовок, как и (как всегда), перенаправляет с HTTPS на HTTP.

2 голосов
/ 14 апреля 2011

Большинство браузеров передают HTTP_REFFERER с помощью location.href, но IE в некоторых случаях этого не делает.

Если для вас действительно важны рефереры, то вы можете сделать это:

function goTo(url) {
 var a = document.createElement("a");
 if(!a.click) { //Only IE has .click so if it doesnt exist use the simple method where the refferer is passed on other browsers.
  location.href = url;
  return;
 }
 a.setAttribute("href", url);
 a.style.display = "none";
 (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(a);
 a.click();
}
2 голосов
/ 14 апреля 2011

он видит страницу, с которой пришел, точно так же, как щелкает ссылку.

Чтобы проверить это с любой страницы, перенаправьте на страницу phpinfo () или любую другую страницу, которая отображает заголовки, например:1003 *

window.location='http://hosting.iptcom.net/phpinfo.php';

(страница извлечена из случайного поиска Google)

...