我想使用Response.Redirect
重定向到包含查询字符串值的新URL,如下所示:
Response.Redirect("http://www.example.org/?key1=value1&key2=value2");
这会将以下响应返回到浏览器,导致浏览器请求新页面:
{script:"window.location=\"http://www.example.org/?key1=value1&key2=value2\";"}
不幸的是,IE11和Google Chrome的处理方式不同。 IE11的行为符合人们的预期,但是Chrome HTML对该响应进行了编码,导致浏览器重定向到http://www.example.org/?key1=value1&key2=value2
,这显然不是我想要的。如何在两个浏览器中使用Response.Redirect
来表现正常?
编辑:
为清楚起见,事件的顺序如下:
form
发布到服务器上Response.Redirect
的调用。{script:"window.location=\"http://www.example.org/?key1=value1&key2=value2\";"}
Edit2:
我已经更新了代码,以明确地执行302重定向,而不是使用Response.Redirect
,但是它的行为仍然相同! 302被JS重定向代替了!有谁知道任何地方(在代码或IIS中)可能导致此行为的任何设置?我的新重定向代码是:
private void ExplicitRedirect(string url)
{
Response.StatusCode = 302;
Response.RedirectLocation = url;
Response.End();
}
答案 0 :(得分:1)
该项目使用Ext.Net显然改变了Response.Redirect
的行为。使用Ext.Net自己的Redirect
方法仍然使用JS而不是302,但是由于某种原因,该方法可以按预期工作。