2010-03-17 3 views
7

Привет, я пробовал следующее, чтобы найти реферер в MSIE/IE7 и IE8, но каждый раз возвращал его;HTTP Referrer и IE7 и IE8

PHP:

<? 
echo $_SERVER['HTTP_REFERER']; 
?> 

JAVASCRIPT:

document.write('Thanks for visiting from ' + document.referrer); 

ли кто-нибудь знает, что этот вопрос может быть я referering с помощью document.location со страницы на другом домене и работы отлично со всеми другими браузерами минус MSIE.

Любая помощь будет замечательной!

ответ

5

HTTP Referer header не требуется по протоколу HTTP:

  • Он отправляется только как информации
  • Браузер может, или не может, отправить его (который объясняет бы, почему вы получить его с некоторыми браузерами, а не получать его с некоторыми другими)
  • Некоторые брандмауэры/программное обеспечение для обеспечения безопасности могут удалить его, я полагаю, в некоторых ситуациях (Я видел это несколько лет назад, если я правильно помню ют)
  • Это может быть легко подделана пользователем

Это означает, что вы не можете полагаться на Referer для вашего приложения: вы можете использовать его, чтобы обеспечить некоторую additionnal functionnality, но ваше приложение должно работать даже если его там нет или неверно.

+1

кто знает конкретные обстоятельства, почему IE8 или IE7 отказались бы послать реферера, который он был передан? рассмотрите браузер по умолчанию без брандмауэра. – cocacola09

+0

@ cocacola09 Этот сайт утверждает, что это ошибка http://webbugtrack.blogspot.de/2008/11/bug-421-ie-fails-to-pass-http-referer.html – DanFromGermany

1

HTTP_REFERRER не работает в браузере IE, он отлично работает для всех браузеров, таких как mozilla, safari, opera и т. Д. Метод Referrer не распознает в IE, он возвращает null, когда мы применяем его для IE. Фактически использование самого HTTP_REFERRER не является правильным критерием, потому что мы не можем ожидать, что он будет работать или нет, поскольку он не является стандартным HTTP HEADER.

+0

'HTTP_REFERER', а не' HTTP_REFERRER '. – DCShannon

-2

Вот хак вы можете попробовать:

var referLink = document.createElement('<a href="' + theUrl + '" target="' + theWindow + '"></a>'); 
    document.body.appendChild(referLink); 
    referLink.click(); 
Смежные вопросы