Перенаправление кадров в C#
-
21-09-2019 - |
Вопрос
Я хотел бы выполнить перенаправление кадра на C# из моего управляемого модуля для IIS 7.
Когда я звоню context.Response.Redirect(@"http://www.myRedirect.org");
отображается правильная страница, но в браузере также отображается адрес.И это именно то, чего я не хочу.
Поэтому я хочу что-то вроде:
private void OnBeginRequest(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
HttpContext context = app.Context;
// make a frame redirect if a specified page is called
if (context.Request.ServerVariable["HTTP_REFERER"].Equals(@"http://www.myPage.org/1.html"))
{
// perform the frame redirect here, but how?
// so something like
context.Response.Redirect(@"http://www.myRedirect.org");
// but as I said that doesn't redirect as I want it to be
}
}
Есть идеи по этому поводу?
РЕДАКТИРОВАТЬ:Я попробовал пример, поэтому у меня есть:
private void OnBeginRequest(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
HttpContext context = app.Context;
// make a frame redirect if a specified page is called
if (context.Request.ServerVariable["HTTP_REFERER"].Equals(@"http://www.myPage.org/1.html"))
{
// perform the frame redirect here, but how?
context.Response.Write(@"<html>");
context.Response.Write(@"<head>");
context.Response.Write(@"</head>");
context.Response.Write(@"<frameset rows=""100%,*"" framespacing=""0"" frameborder=""NO"" border=""0"">");
context.Response.Write(@"<frame src=""http://www.myRedirect.org"" scrolling=""auto"">");
context.Response.Write(@"</frameset>");
context.Response.Write(@"<noframes>");
context.Response.Write(@"<body>Some text...");
context.Response.Write(@"</body>");
context.Response.Write(@"</noframes>");
context.Response.Write(@"</html>");
}
}
Но это также неправильно перенаправляет.В моем браузере все еще отображается адрес перенаправления.Есть еще идеи?
РЕДАКТИРОВАТЬ:Я очевидно допустил ошибку.Приведенный выше код работает и делает то, что я хочу.Сначала это не сработало, потому что мой URL-адрес перенаправления делал что-то неожиданное.
Решение
Чтобы выполнить перенаправление кадров вам нужно отправить обратно HTML-код, содержащий набор фреймов с одним кадром, с установленным для него источником http://www.myRedirect.org.Что касается сервера и браузера, то никакого перенаправления не произошло — он просто получил некоторый HTML-код.
Выполнение Response.Redirect
как вы заметили, браузер выполнит новый запрос на новую страницу, показывая пользователю новый адрес в строке заголовка.Обычно он используется, когда страница фактически меняет свой адрес, но владельцы по-прежнему хотят, чтобы она была доступна и по исходному URL-адресу.
РЕДАКТИРОВАТЬ:Пример перенаправления HTML-фрейма: http://en.wikipedia.org/wiki/URL_redirection#Frame_redirects