我们有一个使用Response.Redirect
的基于Web的应用程序e.g。 Response.Redirect(“http://app_domain.com/userhome.aspx”)
在基于表单的身份验证后立即将Web浏览器重定向到适当的主页。当客户端和服务器位于同一网络上时,此方法可以正常工作。
我们有一个用例,需要通过反向代理(我们使用EZProxy)从外部访问此应用程序。因此,Web浏览器连接到反向代理,反向代理连接到应用程序服务器。在这种情况下,反向代理会重写所有请求和响应。 Web浏览器地址栏中的URL类似于http://app_domain.com.reverseproxy.com/。用户可以浏览到登录页面,输入凭据并单击登录按钮。但是,似乎成功登录后的Response.Redirect通过将浏览器重定向到http://app_domain.com/userhome.aspx来中断流程。浏览器无法直接连接到此域,因为它位于防火墙后面。
此问题与Response.Redirect in ASP.NET AJAX calls类似。但是我发现这个问题没有一个令人满意的答案。
是否可以使用相对路径,如
Request.Redirect( “〜/ Userhome.aspx”)
或者在传递给浏览器之前是否在服务器端得到解决?
期望的结果将是一个重定向机制,它将考虑Web浏览器地址栏中存在的域/ URL。
使用fiddler,这就是我所看到的。最后一次重定向不是反向代理友好的。
HTTP / 1.1 200确定
缓存控制:无缓存
Pragma:no-cache
Content-Type:text / plain;字符集= UTF-8
过期:-1
服务器:Microsoft-IIS / 7.0
Set-Cookie:.ASPXAUTH = BE3D7796245FEEA18FF92C9BD4B3F68F08C9E22CA209A139FBDC45BD6633788E6E68EE30F2BAE7EB223CA8F492FA93DFE7AB2723A848C6E75DF87B613075AF418D517921E81B2741224D702B9;路径= /;仅Http
Set-Cookie:.ASPXAUTH = 693B8AC69ABB53F7468466C6D10C9BF5BAFB860F76FC557E3DAD9C733223957E3A46FF8E21E6822CD5420F1724C61809DC83FDE7C8E3DF9D4E972E61F7DDEE05C61E8D8AA97107B5B68412AFC347;路径= /;仅Http
X-Powered-By:ASP.NET
日期:2012年6月15日星期五20:41:32 GMT
内容长度:64
46 | pageRedirect || http://app_domain.com/UserHome.aspx|