2009-04-07 7 views
5

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

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

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

+1

Сеть разработчиков Mozilla. Я на самом деле думаю, что я просто открыл целую банку червей с этим и, вероятно, не должен был добавлять мое сообщение здесь, пока не узнал, что происходит, извините. (см. http://stackoverflow.com/questions/15344187/how-does-it-appear-that-mdn-can-detect-a-request-from-an-iframe-on-the-server-si) – JayC

ответ

0

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

0

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

0

Не будет ли он работать с перенаправлением, используя Javascript с окном. Вызывает перенаправление полной страницы?

0

просто проверьте адрес текущей страницы .. , если это то же самое со страницей 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

Просто обратите внимание, что вам нужно использовать Request.UrlReferrer, а не Request.Url, поскольку Request.Url вернет url iframe. –