Подтвердить что ты не робот

ASP.NET - Response.Redirect Не заполняющий URL-адрес

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

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, но реферер имеет значение null.

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

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

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

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

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

Указывает ли только, что реферер заполняется фактическими щелчками пользователя ссылки?

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

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

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

4b9b3361

Ответ 1

Итак, я сделал некоторое Google'ing, чтобы найти свой ответ.

Нет, спасибо Qaru - kidding, =)

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

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

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

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

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

Ответ 2

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

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