Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Получение предыдущей странице


Автор: Anabolic 8.7.2008, 13:09
Здравствуйте. У меня такая проблеммка. Мне нужно получить адресс страницы с которй пользователь зашел на мой асп проект. Допустим Пользователь зашел на www.SomeSite.ru и там была ссылка, перенаправляющая его на мой проект http://MyProject/Default.aspx. мне нужно из страницы дефолт получить адрес предыдущей (www.SomeSite.ru ). как мне это сделать?
У асп есть свойство PreviousPage, но оно распространяется только на страницы внутри проекта. и в данном случае возвращает null.
Жду советов!

Автор: Idsa 8.7.2008, 13:13
Совсем недавно обсуждалось здесь: http://forum.vingrad.ru/forum/topic-219112/kw-%D0%B8%D0%BB%D0%B8-%D1%81%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%BE-url-system-web.html
Если кратко, то Request.UrlReferrer.

Автор: Anabolic 8.7.2008, 13:16
Я пробовал, Но это свойство тоже null возвращает

Автор: Idsa 8.7.2008, 13:22
Цитата(Anabolic @  8.7.2008,  17:16 Найти цитируемый пост)
Но это свойство тоже null возвращает 

Не верю smile Опишите, как Вы пробовали.

Автор: Anabolic 8.7.2008, 13:27
protected override void OnInit(EventArgs e)
        {
            Request.UrlReferrer.ToString();            
            base.OnInit(e);
        }
я открываю страницу гугла, к примеру. потом вбиваю в урл запроса адрес своего сайта (http://localhost и т.д.) и при событии Init я хочу найти этот адресс, но к сожалению... не получается smile

Автор: Idsa 8.7.2008, 13:49
Я не про код спрашивал... я подозревал, что Вы делаете вот так:
Цитата(Anabolic @  8.7.2008,  17:27 Найти цитируемый пост)
я открываю страницу гугла, к примеру. потом вбиваю в урл запроса адрес своего сайта (http://localhost и т.д.)

Конечно, UrlReferrer будет равен нулю. Ведь Вы переходите на свой сайт не по ссылке с другого сайта, а из строки запроса браузера. То, что в браузере открыта страничка, на которой есть ссылка на Ваш сайт, ни о чем не говорит. Ведь Вы с тем же успехом могли открыть сайт, на котором нет ссылки на Ваш сайт. Http заголовок Referrer заполняется браузером только в случае щелчка по ссылке на странице.

Добавлено через 3 минуты и 24 секунды
Цитата(Idsa @  8.7.2008,  17:49 Найти цитируемый пост)
Http заголовок Referrer заполняется браузером только в случае щелчка по ссылке на странице. 

Даже немного не так. Заголовок Referrer заполяняется при любом действии, приводящем к PostBack'у (это может быть не только щелчок, но и какая-нибудь JS функция, например).

Автор: Anabolic 8.7.2008, 15:02
ну а если это, допустим, автоматическое перенаправление, а не переход по ссылке? скажем, я настрою иис, что бы он перенаправлял с одной страници на другую. что будет в этом случае?

Автор: Idsa 8.7.2008, 22:53
Цитата(Anabolic @  8.7.2008,  19:02 Найти цитируемый пост)
скажем, я настрою иис, что бы он перенаправлял с одной страници на другую. что будет в этом случае? 

Не знаю, о каких именно настройках Вы говорите, но, думаю, первая страница не будет грузиться вообще, поэтому реферер будет пустой.
Вот интересная тема аж 2002 года: http://www.webmasterworld.com/forum39/696.htm
Вот краткая выдержка особенностей отправки Referrer.
Цитата

- some browsers will only send the root domain for any site.
- some browsers and proxy servers will repeatidly send an external referrer for EVERY page it visits. If it comes in from Google, and they visit 20 pages, all 20 pages could see that same google referral string sent.
- Most clued in Opera users turn off referrals as a security precaution. Mozilla may have an option to do the same soon. They are arguing about it now.
- I have heard that there is a version of msn IE that will not report an external referral under some security settings (not sure, but the pattern fits).
- Revisits. If a page is reloaded, some browsers will sent that page itself as the referral. hence, the high proportion of www.mysite.com in your logs.
- no cache mania. Most of the dsl, cable, and other high speed modem manufactuers are telling people to turn off caching in their browser. They all have explicit details on their site as one of the setup steps to take. That in turn is skewing referral numbers as even a simple back button can cause a page reload. That referrer will often be the previous page. 

Также есть список ситуаций, когда Referrer не отправляется впринципе. "Direct access" (в частности то, что Вы пытались сделать парой постов выше) стоит во главе этого списка (по понятным причинам). 
Каждый браузер по-своему относится к вопросу отправки Referrer, так что всерьез использовать эту информацию не стоит.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)