Response.Redirect() в iFrame, перенаправить родительское окно
Я знаю, что это невозможно, но что является лучшей альтернативой для желающих сделать Response.Redirect
из iFrame, чтобы перенаправить родительскую страницу?
3 ответа
Вы не можете сделать это с помощью ASP.NET. ASP.NET на стороне сервера может перенаправить входящий запрос и не может знать о родительском фрейме.
Но если вы хотите перенаправить родительский фрейм при некоторых условиях на стороне сервера, вы можете вызвать JavaScript с сервера следующим образом:
protected void Page_Load(object sender, EventArgs e) {
ClientScriptManager.RegisterClientScriptBlock(this.GetType(),
"RedirectScript", "window.parent.location = 'http://yoursite.com'", true);
}
И, конечно, вы можете использовать простой JavaScript window.parent.location = 'http://yoursite.com' на стороне клиента.
Я только что использовал следующий код с успехом. Оно даже обошло X-Frame-Options SAMEORIGIN
и разрешает перенаправление с одного домена на другой в iframe:
string url = "https://siteurl.com";
Response.Write("<script>top.location='"+url+"';parent.location='"+url+"';</script>");
С интерполяцией строк (начиная с C# 6):
string url = "https://siteurl.com";
Response.Write($"<script>top.location='{url}';parent.location='{url}';</script>");
Response.Clear();
Header.Controls.Add(new LiteralControl(@"
<script type=""text/javascript"">
top.location = ""/Logout.aspx"";
parent.location = ""/Logout.aspx"";
</script>
"));
url = "Your.asp?YourVar="&YourVar
%> \end your classic asp code and pass to the script below
<script type='text/javascript'>window.top.location.href = '<%= url %>'</scrip>