私のJavaEEWebアプリケーションでは、問題があります。次のように記述した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
サーバーの場合、クライアントはもちろんブラウザではなくリバースプロキシであることを理解しています。
だから私の質問は:サーブレットが元のサーバー名を取得するにはどうすればよいですか?つまり、Webブラウザ(MYPUBLICSERVERNAME)とプロトコル(HTTPSの場合はHTTPS)に示されているサーバー名です。
回避策は、ブラウザがMYPUBLICSERVERNAMEしか認識していないため、ブラウザからフィードされたCookieを使用することですが、より洗練されたソリューションが存在する可能性がありますか?
もちろん、期待されるプロトコルとサーバー名で魔法のようにリダイレクトできるSpring関数を知っていれば、それも問題ありませんが、見つかりませんでした。
ご回答有難うございます