Обнаружение на стороне сервера, что страница отображается внутри IFrame - PullRequest
6 голосов
/ 07 апреля 2009

Можно ли определить - на стороне сервера - была ли страница загружена в IFrame?

Когда в моем приложении происходят определенные ошибки, пользователь перенаправляется на Default.aspx и отображается сообщение об ошибке. Текст этого сообщения об ошибке устанавливается в сеансе с помощью кода обработки исключений. Сообщение об ошибке удаляется из сеанса после его отображения.

Однако часть моего приложения должна использовать IFrame (он выполняет проверку платежа картой 3D Secure, которая требует IFrame для отображения пользовательского интерфейса аутентификации провайдера карты). Если во время этого процесса произойдет ошибка, мое перенаправление вступит в силу в пределах IFrame. Я использую JavaScript, чтобы обнаружить это и перезагрузить Default.aspx правильно, но это означает, что я получаю два Page_Loads в быстрой последовательности, и сообщение об ошибке отображается только в первом (и затем очищается).

Ответы [ 6 ]

3 голосов
/ 19 октября 2011

Вы можете сделать это на стороне клиента: Как определить, загружается ли веб-страница внутри iframe или непосредственно в окне браузера?

Обходной путь, который я нашел, помещает некоторый идентификатор в строку запроса URL-адреса, открытого внутри iframe.

0 голосов
/ 15 апреля 2015

просто, проверьте URL текущей страницы .. если то же самое со страницей IFrame, тогда перенаправьте на Default.aspx или что-то еще.

Dim urlpath1 As String = HttpContext.Current.Request.Url.AbsoluteUri
If Right(urlpath1, 13) = "WebForm1.aspx" Then
       Response.Redirect("~/")
   Else
       Response.Write("It's OK!")
   End If
0 голосов
/ 14 марта 2015

Это невозможно, потому что клиент может открыть iframe с отключенным JavaScript. http://caniuse.com/#feat=iframe-sandbox

0 голосов
/ 10 апреля 2009

Не сработает ли перенаправление с использованием Javascript с помощью window.location? Принудительное перенаправление полной страницы?

0 голосов
/ 07 апреля 2009

С серверной стороны нет пути. Единственный способ - через JavaScript. Когда вы делаете перенаправление, вы можете передать сообщение об ошибке или код через строку запроса?

0 голосов
/ 07 апреля 2009

Я не думаю, что вы можете обнаружить в смысле наличия какой-то функциональности Page.IsInIFrame (), но вы могли бы рассмотреть возможность использования различных базовых классов для тех страниц, которые загружаются в IFrame и тех, которые не ' t, чтобы вы могли знать, что ошибка связана с запросом на страницу IFrame, которая может в некоторой степени помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...