Nebere se v potaz HTTP_X_FORWARDED_HOST
- brabo
- Člen | 19
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
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