我们有一个使用 Response.Redirect 的基于 Web 的应用程序
例如 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来中断流程。浏览器无法直接连接到此域,因为它位于防火墙后面。
这个问题类似于ASP.NET AJAX 调用中的 Response.Redirect。但是我看到这个问题没有令人满意的答案。
是否可以使用相对路径,例如
Request.Redirect("~/Userhome.aspx")
还是在传递给浏览器之前在服务器端解决?
期望的结果将是一种重定向机制,该机制将考虑 Web 浏览器地址栏中存在的域/url。
使用提琴手,这就是我所看到的。最后一个重定向不是反向代理友好的。
HTTP/1.1 200 正常
缓存控制:无缓存
Pragma:无缓存
内容类型:文本/纯文本;字符集=utf-8
过期:-1
服务器:Microsoft-IIS/7.0
设置 Cookie:.ASPXAUTH=BE3D7796245FEEA18FF92C9BD4B3F68F08C9E22CA209A139FBDC45BD6633788E6E68EE30F2BAE7EB223CA8F492FA93DFE7AB2723A848C6E75DF87B61327027AF418D42249 路径=/; HttpOnly
Set-Cookie: .ASPXAUTH=693B8AC69ABB53F7468466C6D10C9BF5BAFB860F76FC557E3DAD9C733223957E3A46FF8E21E6822CD5420F1724C61809DC83FDE7C8E3DF9D4E972E61F7DDEE05C61E8D8AA97107B5B68412AFC347; 路径=/; HttpOnly
X-Powered-By: ASP.NET
日期:格林威治标准时间 2012 年 6 月 15 日星期五 20:41:32
内容长度:64
46|页面重定向|| http://app_domain.com/UserHome.aspx|