iFrame中的Response.Redirect(),重定向父窗口

时间:2011-09-05 11:19:40

标签: asp.net iframe redirect response.redirect

我知道这是不可能的,但是想要从iFrame执行Response.Redirect,重定向父页面的最佳选择是什么?

4 个答案:

答案 0 :(得分:11)

使用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'。

答案 1 :(得分:6)

我刚才成功使用了以下代码。它甚至绕过X-Frame-Options SAMEORIGIN并允许在iframe中从一个域重定向到另一个域:

string url = "https://siteurl.com";
Response.Write("<script>top.location='"+url+"';parent.location='"+url+"';</script>");

使用string interpolation(因为C#6):

string url = "https://siteurl.com";
Response.Write($"<script>top.location='{url}';parent.location='{url}';</script>");

答案 2 :(得分:2)

Response.Clear();
Header.Controls.Add(new LiteralControl(@"
<script type=""text/javascript"">
top.location = ""/Logout.aspx"";
parent.location = ""/Logout.aspx"";
</script>
"));

答案 3 :(得分:0)

    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>