Z čeho přesně se generuje absolutní odkaz?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Petr Daňa
Člen | 109
+
0
-

Ahoj, nedaří se mi ve zdrojácích najít, jak přesně (lépe řečeno z čeho) se generuje absolutní URL, tj. když volám např.: ->link(‚//this‘).

Testováním jsem zjistil, že název serveru se nejspíš bere z HTTP_HOST, ale nemůžu přijít na to, z čeho se bere port.

Jde mi konkrétně o tuhle věc: ve vývojovém prostředí má aplikace třeba url „dev:10000“. Pro účely testování některých částí aplikace potřebujeme přistupovat k aplikaci z vnějšku, tj. internetu. Za tímto účelem máme doménu (např. „aplikace.domena.cz“) přesměrovanou na „dev:10000“. Ta aplikace.domena.cz je dostupná v _SERVER[‚HTTP_X_FORWARDED_HOST‘] a _SERVER[‚HTTP_X_FORWARDED_SERVER‘]. Když tedy tím HTTP_X_FORWARDED_HOST přepíšu _SERVER[‚HTTP_HOST‘], tak mi absolutní URL generuje „http://aplikace.domena.cz:10000/…“, ale správně má být jen „http://aplikace.domena.cz/…“.

Při spuštění normálně uvnitř je URL „http://dev:10000/…“, přičemž _SERVER[‚HTTP_HOST‘] obsahuje „dev:10000“ – předpokládal jsem tedy, že port se bere taky odtud.

David Grudl
Nette Core | 8170
+
0
-

Bere se to z adresy, tak jak ji zjistí HttpRequest::detectUri(). Ta používá HTTP_HOST nebo SERVER_NAME a pokud neobsahují port, tak ten se vezme z SERVER_PORT.

Petr Daňa
Člen | 109
+
0
-

Díky za upřesnění, to jsem přesně potřeboval.