Nebere se v potaz HTTP_X_FORWARDED_HOST

brabo
Člen | 19
+
+1
-

Zdravím. Máme u klienta poměrně nehezky nastavené proxy, kdy v HTTP_HOST je interní IP adresa serveru. Zatímco původní DNS název je v HTTP_X_FORWARDED_HOST. Je to podle mě celkem neobvykle nastavené proxy, ale nejspíš splňující nějaké standardy.

Problém pak je, že pokud generuji absolutní linkt (například //this nebo podobně), sestaví se mi URL s interní IP adresou serveru (místo s původním DNS názvem).

Zdebugoval jsem, že nastavení http/proxy v configu zafunguje dobře, a RequestFactory dokonce správně do proměnné $remoteHost vyparsuje správný DNS název. Ten ale jen předá do vytvořeného Request objektu, a nikdy dál se s tím už očividně nepracuje. Protože generátor adresy používá URL objekt, kde zůstane původní host.

Podle mě by se mělo při zjištějí $remoteHost nastavit $url->setHost($remoteHost);. Analogicky, jako se to děje při zjištění přesměrovaného portu nebo protokolu.

Otázka na Nette Gurus. Je nějaký důvod, proč se to teď neděje?

CZechBoY
Člen | 3608
+
0
-

Ve zdrojáku se mi zdá, že to je pomíchané s REMOTE_HOST tzn. že si Nette myslí, že v té hlavičce dostane hostname klienta, ale ono je tam forwardované „hostname serveru“.
https://developer.mozilla.org/…rwarded-Host

Můžeš poslat PR?
Změna se bude týkat asi jen této části.
https://github.com/…tFactory.php#L261

Felix
Nette Core | 1196
+
0
-

Bylo by super, kdyz by jsi mohl pripravit upravu (PR) do nette/http. Pripravis?

@brabo