我已经在所有浏览器中尝试了这个并且可以在所有浏览器中使用 - 除了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。
答案 0 :(得分:0)
我刚刚遇到了与IE相同的问题......在使用相对重定向时,IE似乎做了一些不好的事情。尝试在“位置”标题中包含整个协议://域/。