Smyčka přesměrování po přechodu na HTTPS

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

Ahoj,
Chtěl jsem web překlopit do https. Našel jsem, že by mělo stačit pouze v Routeru nastavit

Route::$defaultFlags = Route::SECURED;

Pokud to však udělám, zůstanu ve smyčce v přesměrování. Na foru jsem našel několik rad ale žádná nezabrala.

Hosting je na endoře.

Díky

jiri.pudil
Nette Blogger | 1029
+
0
-

Jak máš nastavený web server? Nepřesměrovává ti to zpátky na http?

janpecha
Backer | 75
+
0
-

Pokud se nepletu, klientské weby na Endoře jsou až za proxy, díky tomu se k webu nedostane informace, že běží na HTTPS, protože požadavek za proxy běží po obyčejném HTTP spojení. Nejspíš tak bude problém v tom.

Párkrát se to řešilo na fóru podpory i v souvislosti s Nette, zkus pohledat tam. Případně jim zkus napsat, jaký je aktuální stav věcí.

malkol
Člen | 133
+
0
-

ano na to jsem koukal ..
přidávám výpis ze serveru …
¨

[HTTP_X_FORWARDED_PROTO] => https
[SERVER_PROTOCOL] => HTTP/1.0

to je ono že ?

A co s tím ?:-)

Editoval malkol (9. 3. 2016 21:09)

janpecha
Backer | 75
+
0
-

Střílím naslepo – zkus na úplný začátek index.php umístit něco jako:

<?php
$_SERVER['HTTPS'] = (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') ? 'on' : 'off';
?>
jiri.pudil
Nette Blogger | 1029
+
0
-

Nette s tím umí, ale jak vidno, zatím je to jen v masteru nette/http.

malkol
Člen | 133
+
0
-

@janpecha tvé řešení nepomohlo.

@jiri.pudil nejsem si jistý, jestli mi to nějak pomohlo … co bych měl tedy udělat ?

janpecha
Backer | 75
+
0
-

A umístil jsi ten kód na úplný začátek index.php?

malkol
Člen | 133
+
0
-

no ..ne uplne .. ale takhle by to melo byt v pořádku ne ?

$container = require __DIR__ . '/../app/bootstrap.php';

$_SERVER['HTTPS'] = (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') ? 'on' : 'off';

$container->getService('application')->run();
janpecha
Backer | 75
+
0
-

Teď jsem to zkoušel a musí to být na úplném začátku, pokud to bude až za vytvořením Containeru, nebude to fungovat:

<?php
$_SERVER['HTTPS'] = (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') ? 'on' : 'off';

$container = require __DIR__ . '/../app/bootstrap.php';
$container->getService('application')->run();
?>

Editoval janpecha (12. 3. 2016 14:33)

malkol
Člen | 133
+
0
-

Vyřešeno . díky ;)

malkol
Člen | 133
+
0
-

Objevil se ale jiný problém .. všechny odkazy, které posílají zpracování na jakoukoli handle funkci .. (změna jazyku,login,..) odkazují na špatnou adresu …

všechny odkáží na

https://neco.cz:80/p/a

což je samozřejmě průšvih … nápad co s tím ? … nastavit navíc kromě HTTPS také port ?

janpecha
Backer | 75
+
0
-

Jinou možnost asi nemáš :) Zkus tu původní konstrukci nahradit tímhle, to by mělo pomoct:

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
	$_SERVER['HTTPS'] = 'on';
	$_SERVER['SERVER_PORT'] = '443';
}
malkol
Člen | 133
+
0
-

pomohlo .. ale příliš se mi to nelíbí :P