2009-10-05 3 views
4

Что бы HTTP реферер быть в следующих случаях:Что будет HTTP referrer?

  1. Пользователь нажимает на ссылку на веб-сайте и поступает на другой веб-сайт, который горячий, соединяющего изображение с 3-го веб-сайта, что бы ссылающейся быть на образ.
  2. Пользователь нажимает ссылку, которая идет на другой веб-сайт, который использует META Refresh, чтобы отправить их на первый веб-сайт.
  3. Пользователь нажимает ссылку, которая идет на другой веб-сайт, который содержит iframe на второй странице второго сайта, является ли реферер исходным сайтом или вторым сайтом?

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

+0

Обратите внимание, что ссылка на страницу может (будет) отличаться от источника ссылок, встроенных в эту страницу. – Arjan

ответ

2

Referer всегда документ/ресурс, который ссылается на текущий ресурс. Итак:

  1. URL-адрес документа изображение горячее связан
  2. В отличии от HTTP перенаправления, метаобновления будет вызывать браузер, чтобы отправить URL в документе метаобновления. находится в.
  3. Как и изображение, Referer будет URL-адресом документа, который содержит фрейм.
+0

Интересно, что вы имеете в виду * * От перенаправления HTTP *? HTTP-переадресация также устанавливает, что реферер является документом, в котором находился запрошенный URL. Таким образом, несмотря на то, что сервер указывает браузеру на выбор другого URL-адреса, реферер не изменяется. Но я предполагаю, что вы не подразумеваете что-то еще и просто говорите, что * if * 2) использовали бы перенаправление HTTP, тогда первый веб-сайт видел бы себя как реферер (что правильно). (Удивительно, как сложно что-то легкое при попытке описать!) – Arjan

1
  1. Реферрером будет третий веб-сайт.

    Реферер всегда является хостом HTTP-запроса.

  2. Отправителем будет другой веб-сайт.

    Несмотря на то, что страница использует метаобновление, она по-прежнему является HTTP-запросом и применяется предыдущее правило.

  3. Реферратором будет второй веб-сайт.

    iframe запросы обрабатываются точно так же, как запросы в новых окнах браузера.

+0

Не так уверен в # 1. Сайт, обслуживающий изображение, будет видеть второй сайт (сайт hotlinking) как референт, а не сам. – timdev

+0

# 1 не должен быть третьим сайтом ... Я на 95% уверен, что узнал, кто был горячим связыванием изображений с моего сайта, потому что я видел их в статистике реферера. – Hintswen

+0

Действительно, # 1 неверно. – Arjan

0

Догадки, но я довольно уверен:

  1. Третий сайт будет видеть второй сайт в качестве реферера.
  2. Первый сайт рассматривает референта как второй веб-сайт
  3. Второй сайт.
+0

Да, это были мои догадки. – Hintswen

1

Прежде всего, HTTP Referer может быть практически любым, на что может повлиять любое программное обеспечение, поддерживающее конфиденциальность, или даже на каком-то шлюзе/прокси-сервере.
Но позвольте мне взять трещину в этом:

 
1. That of the second web site 
2. That of the second web site 
3. pretty sure (not certain) but the second site still seems to be the right response. 

Вне зависимости от текущей страницы в то время, браузер посылает запрос (будь то для изображения, редирект, что угодно) является [обычно] отправлено сервер, лежащий в основе URL-адреса запроса.[снова, если какое-либо устройство конфиденциальности не меняет этот и другие значения HTTP-заголовка]

5

Мне слишком ленив, чтобы попытаться интерпретировать все приведенные сценарии, но чтобы помочь протестировать вещи, можно легко создать PHP-скрипт, чтобы вернуть изображение, которое говорит нам о том, что реферер:

<?php 
    header("Content-type: image/png"); 
    header("Cache-control: no-cache"); 
    header("Pragma: no-cache"); 
    header("Expires: -1"); 

    $s = "Referrer: " . $_SERVER['HTTP_REFERER']; 

    $im = @imagecreate(500, 13) 
    or die("Cannot Initialize new GD image stream"); 
    $black = imagecolorallocate($im, 0, 0, 0); 
    imagecolortransparent($im, $black); 
    $red = imagecolorallocate($im, 255, 0, 0); 
    imagestring($im, 3, 0, 0, $s, $red); 
    imagepng($im); 
    imagedestroy($im); 
?> 

Если веб-сайт отвечает на HTTP редирект, как 302 Moved Temporarily, то ваш браузер будет еще отправить оригинальный реферер с перенаправил запрос:

<?php 
    header("Location: http://[..]/referrer-to-img/referrer.php?redirected"); 
?> 

Обратите внимание, что, например, в Safari на Mac, Command-click (чтобы открыть ссылку на новой вкладке) и Command-Option-click (новое окно) do установить реферер для этой ссылки, выбрав " Открыть ссылку в новой вкладке/окне "из контекстного меню (после щелчка правой кнопкой) делает не.

Счастливое тестирование. ;-)

+0

+1: Очень полезно - спасибо! – RichieHindle

Смежные вопросы