Oto Buchta napsal(a): > Zdar vsichni, > jsem asi potrefen sneznou slepotou skloubenou se sklenenou nemoci - > muze mne nekdo prosim nakopnout, jak inteligentneji udelat: > > request.getRequestURL().substring(0,request.getRequestURL().indexOf(request.getRequestURI()))+request.getContextPath() > ? > > request.getProtocol()+"://"+request.getLocalName()+":"+request.getLocalPort()+request.getContextPath() > za inteligentni nepovazuji.
To líp nejde. Tedy, má to být req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort()+req.getContextPath() protože request.getServerName() vrací jméno HTTP serveru z HTTP hlavičky Host:, kdežto getLocalName() vrací jméno IP rozhraní. U name-based virtual hosts je to zásadní rozdíl. Důvod, proč to nejde, je nejspíš v tom, že v samotném HTTP protokolu to URL není. Přijde totiž něco jako GET /contextPath/neco HTTP/1.1 Host: www.moje.cz takže i Servlet API to musí skládat ze znalosti jestli to bylo SSL nebo ne, z hlavičky Host:, ze znalosti na jakém to bylo portu (ne vždy to trefí správně, u Tomcatu za Apachem a mod_proxy v režimu http proxy to bude blbě), a z URI mezi GET a identifikací verze HTTP. Mimochodem, jako pamětník jistě oceníš, že kdysi dávno znamenalo URI část URL, kdežto dneska je URI nadmnožina URL. Metoda getRequestURI() je toho němým důkazem. Makub -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Supercomputing Center Brno Martin Kuba Institute of Computer Science email: [email protected] Masaryk University http://www.ics.muni.cz/~makub/ Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775 --------------------------------------------------------------
smime.p7s
Description: S/MIME Cryptographic Signature
