对于我的 Java EE Web 应用程序,我遇到了问题。我需要使用我编写的 Spring 控制器将页面 A 重定向到另一个页面 B:
页面 A 用于我的浏览器(在 http 中):
http://MYPUBLICSERVERNAME/MYCONTEXT/A.do :
在作为 Spring 控制器的 A 中,具有以下重定向代码:
@RequestMapping(method = RequestMethod.GET, value = "/A.do")
public String searchProfiles(){
....
return "redirect:/B.html";
}
它在http中完美运行。所以我去 B :
http://MYPUBLICSERVERNAME/MYCONTEXT/B.html
问题来自 HTTPS,因为使用 HTTPS 的反向代理拦截了请求:
这个代理在同一台机器上,我得到:
无法连接,因为当我去:
httpS://MYPUBLICSERVERNAME/MYCONTEXT/A.do
我希望被重定向到:
httpS://MYPUBLICSERVERNAME/MYCONTEXT/B.html
相反,浏览器被重定向到
http://localhost/MYCONTEXT/B.html
我知道对于服务器,客户端是反向代理,当然不是浏览器。
所以我的问题是:servlet 如何获取原始服务器名称,我的意思是 Web 浏览器中指示的服务器名称(MYPUBLICSERVERNAME)和协议(如果是 HTTPS,则为 HTTPS)。
我认为解决方法是使用浏览器提供的 cookie,因为浏览器只知道 MYPUBLICSERVERNAME 但可能存在更优雅的解决方案?
当然,如果我知道一个可以使用预期协议和服务器名称神奇地重定向的 spring 函数,那也没关系,但我没有找到它。
感谢您的回答