2010-09-17 2 views
12

Мне кажется, что я сделал это много раз, но я не могу для жизни меня выяснить, что происходит не так.ASP.NET - Response.Redirect Not Population Url Referrer

Default.aspx:

protected void Page_Load(object sender, EventArgs e) 
{ 
    var r1 = Request.UrlReferrer; // null 
    var r2 = Request.ServerVariables["HTTP_REFERRER"]; // null 
} 

SingleSignOn.aspx:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Response.Redirect("/"); 
} 

Если я типа "/SingleSignOn.aspx" в URL, он перенаправляет на Default.aspx, но ссылочный номер равен нулю.

Что мне здесь не хватает?

Что им пытается сделать (это упрощенный пример), на любой странице, я буду иметь некоторые JavaScript, чтобы сделать следующее:

window.location.replace('~/SingleSignOn.aspx'); 

Который, как вы уже догадались, подписывает пользователь, и перенаправляет на домашнюю страницу.

Но мне нужно построить логику в этом JavaScript, чтобы не перенаправлять страницу SingleSignOn.aspx, если мы только что пришли оттуда.

Включает ли реферер только фактические ссылки пользователя?

Как я могу это сделать? Я не хочу использовать QueryString, потому что я не хочу видеть это в URL-адресе.

Единственный другой вариант, о котором я могу думать, - это сеанс.

Пожалуйста, помогите. = (

+0

Любопытно узнать, почему вы перенаправляете из java-script. Сценарий, который вы описываете, я бы проверял на стороне сервера (возможно, OnInit базовой страницы), если пользователь аутентифицирован или нет. Если нет, то перенаправление на страница, которая делает это. – VinayC

+0

@VinayC - это сложно.В основном я работаю над приложением Facebook Connect - после загрузки страницы javascript позволяет мне знать, что я могу их подписать, поэтому я перенаправляю. Я не знаю, могу ли я подписать их до тех пор, пока не будут выполнены API-интерфейсы на стороне клиента. – RPM1984

+0

Ну, вы можете добавить свой собственный файл cookie, когда пользователь будет аутентифицирован, а затем из javacript, вы можете увидеть, существует ли файл cookie или нет, чтобы решить, нужно ли перенаправлять или нет. Если вы не хотите использовать cookie, тогда ваши страницы (должны быть сделаны на базовой странице) должны установить некоторую переменную JS, если пользователь аутентифицирован. Разница между подходом cookie заключается в том, что cookie необходимо установить только один раз (в SingleSignOn.aspx), в то время как переменная js должна быть установлена ​​на каждой странице (следовательно, логика должна быть помещена на общую базовую страницу). – VinayC

ответ

9

Таким образом, я не сделал некоторые Google'ing найти мой ответ

нет благодаря Stack Overflow -. Шучу =)

Так что URL Referrer только заселенные фактического клиента -click (тег привязки, кнопка).

Не когда вы вручную помещаете его в URL-адрес (это то, что делает мой JavaScript).

Решение, с которым я столкнулся, состоит в том, чтобы создать файл cookie на странице SingleSignOn.aspx и прочитать этот файл cookie с JavaScript, прежде чем перенаправить его снова.

Только то, что мне нужно, больше куки. = (

Если кто-то здесь не имеет лучшее представление о том, что это то, что плохо идти с

+1

Спасибо большое, мне нужно было очень похожее решение, потому что я модифицировал мастер hodgepodge, где вы могли бы пропустить шаги, потому что они не проверяли реферера. Я также попробовал «UrlReferrer», и он работал в разработке и не удался при развертывании в IIS. Решение для печенья было идеально! –

0

Просто догадка, но попробуйте использовать абсолютный URL вместо/в том числе даже HTTP:.. // часть

Тем не менее, вы не должны полагаться на UrlReferrer от того, чтобы быть там, так как его можно удалить с клиентской стороны (добавками, не уверенными даже в некоторых конфигурациях браузера).

+0

Да, я попробовал это, см. Мой ответ выше - только клик-клик (кнопка, якорь) приведет к заполнению заголовка HTTP-реферера. – RPM1984

+0

@ RPM1984 k, но перенаправление («/») не совсем то, что я упомянул, это было бы похоже на Redirect («http://myserver.com/»). – eglasius

+0

Да - попробовал это, а также попробовал его в совершенно новом веб-проекте (так что никаких других факторов, например, переписывания URL-адресов). Нет. Во всяком случае, решение cookie работает, и мне нужно «проверить» предыдущую страницу с клиентской стороны, что упростит ее cookie. Спасибо за вашу помощь. – RPM1984

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