Internet Explorer不遵循域之间的相对重定向URL

时间:2010-11-04 12:03:55

标签: internet-explorer http redirect

我已经在所有浏览器中尝试了这个并且可以在所有浏览器中使用 - 除了IE。这是场景:

主机A中的

我们会在您点击链接时将您重定向到主机B:

<%@Page Language="C#"%>
<script runat=server>  
    override protected void  OnLoad(EventArgs e)  
    {  
        if (Request.QueryString["l"] != null)  
            Response.Redirect(Request.QueryString["l"]);  
    }  
</script>  
<a href="tk.aspx?l=http://HOSTB/landingpage.aspx">redirect to a different domain</a>  
</code>
</pre>

在主机B landingpage.aspx中,当您在没有Cookie的情况下到达时,我们会设置一个Cookie并将您重定向到 relative 网址 /landingpage.aspx

<%@Page Language="C#"%>
<script runat=server>
    override protected void  OnLoad(EventArgs e)
    {
        if (Request.Cookies["PHPSESSID"] == null)
        {
            Response.Cookies.Add(new HttpCookie("PHPSESSID", "set"));
            Response.Redirect("/landingpage.aspx");
        }
    }
</script>
<h1>you made it to <% = Request.Url.Host%></h1>

在我尝试的所有浏览器中,您都会到达HOSTB / landingpage.aspx。但是,在IE中,您到达HOSTA / landingpage.aspx。

我知道发生了什么,并且登陆HOSTB时的相对重定向被解释为相对于原始url的路径,通常我只是将相对url更改为绝对url,但是这是擦除:我不知道控制HOSTB 所以我不能这样做。

有没有办法让重定向棒?

为了更加清晰,这里是fiddler看到的整个对话,以及使用IP和Name替换这两个域时使用一台机器突出显示的麻烦的重定向。你可以看到我到达了10.0.20.10/landingpage.aspx,但是在相对重定向后,我实际上回到了之前的域名XPS730。

1 个答案:

答案 0 :(得分:0)

我刚刚遇到了与IE相同的问题......在使用相对重定向时,IE似乎做了一些不好的事情。尝试在“位置”标题中包含整个协议://域/。