Dne 26. listopadu 2009 13:14 Martin Kuba <[email protected]> napsal(a): > 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.
Jasne, dik za opravu, ja moc v ukazce neresil, co bude jak pouzito, psal jsem to z placu... > 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. Toto je stara znama pisnicka - moc dobre vim, co jde v HTTP. Ano, neznam AJP, abych vedel, jak to vyhodnoti. To, ze za mod_proxy to bude neco jineho, je opet jasne - ale to neni problem, protoze pro TomCata je to JEHO URL a on musi pracovat s tim ,co mu prijde. Presto jsem ocekaval, ze to pujde nejak inteligentneji. Preci jenom by container mohl mit vice informaci nez ja... No co uz. Dik za odpoved. > 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. Jakozto pametnik si na tuto zmenu i pres sklenenou nemoc moc dobre pamatuju ;-) -- Oto 'tapik' Buchta, [email protected], http://tapikuv.blogspot.com
