$c->log->info('Logout');
$c->logout;
$c->response->redirect($c->uri_for("/"));
и видит чуденсую ошибку.
Сейчас я решил этот вопрос явным указанием того, что схема у нас
https:
$c->log->info('Logout');
$c->logout;
my $uri = $c->req->base();
$uri->scheme("https");
$c->req->base($uri);
$c->response->redirect($c->uri_for("/"));
Но вот что-то мне подсказывает, что такой суровый хардкод не очень
красив. По странным причинам Catalyst::Plugin::RequireSSL тоже не
сильно помог.
Кто сталкивался с такой проблемой и знает как решить ее малой кровью?
пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ ajax пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ javascript, пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ javascript'пїЅ
--- пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ ---
пїЅпїЅ пїЅпїЅпїЅпїЅ: "Serg Gulko" <s.g...@gmail.com>
пїЅпїЅпїЅпїЅ: "Kiev Perl Users Group" <kiev-perl-...@googlegroups.com>
пїЅпїЅпїЅпїЅ: 11 пїЅпїЅпїЅпїЅпїЅпїЅ 2011, 20:54:50
пїЅпїЅпїЅпїЅ: Catalyst, redirect пїЅ https
> пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ Catalyst, пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ FastCGI, пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ front-
> end-пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ nginx.
> пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ $c->response->redirect($c->uri_for("/cool_place"));
> backend пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ http, пїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅ nginx-пїЅ пїЅ
> пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ SSL.
> пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ Logout, пїЅпїЅпїЅпїЅпїЅ
> пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ /logout,
> пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅ:
>
> $c->log->info('Logout');
> $c->logout;
>
> $c->response->redirect($c->uri_for("/"));
>
> пїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ.
>
> пїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ, пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅ
> https:
>
> $c->log->info('Logout');
> $c->logout;
>
> my $uri = $c->req->base();
> $uri->scheme("https");
> $c->req->base($uri);
>
> $c->response->redirect($c->uri_for("/"));
>
> пїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅ-пїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅ
> пїЅпїЅпїЅпїЅпїЅпїЅ. пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ Catalyst::Plugin::RequireSSL пїЅпїЅпїЅпїЅ пїЅпїЅ
> пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ.
> пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ
можно сделать альтернативный вариант: отправить ajax запрос на javascript, получить результат и сделать редирект на javascript'е --- Исходное сообщение --- От кого: "Serg Gulko" <s.g...@gmail.com> Кому: "Kiev Perl Users Group" <kiev-perl-...@googlegroups.com> Дата: 11 ноября 2011, 20:54:50 Тема: Catalyst, redirect и https > Есть приложение на Catalyst, запущено под FastCGI, в качестве front- > end-а используется nginx. > При использовании $c->response->redirect($c->uri_for("/cool_place")); > backend всегда делает редикерк по http, в то время как на nginx-е у > нас поднят SSL. > Особенно неприятно это проявляется при операциях типа Logout, когда > пользователь явно был в защищенной зоне, послал запрос типа /logout, > который имел такой вот вид: > > $c->log->info('Logout'); > $c->logout; > > $c->response->redirect($c->uri_for("/")); > > и видит чуденсую ошибку. > > Сейчас я решил этот вопрос явным указанием того, что схема у нас > https: > > $c->log->info('Logout'); > $c->logout; > > my $uri = $c->req->base(); > $uri->scheme("https"); > $c->req->base($uri); > > $c->response->redirect($c->uri_for("/")); > > Но вот что-то мне подсказывает, что такой суровый хардкод не очень > красив. По странным причинам Catalyst::Plugin::RequireSSL тоже не > сильно помог. > Кто сталкивался с такой проблемой и знает как решить ее малой кровью?
fastcgi_param HTTPS on;
О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ Catalyst, О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ FastCGI, О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ front- end-О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ nginx. О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ $c->response->redirect($c->uri_for("/cool_place")); backend О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ http, О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫ nginx-О©╫ О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ SSL. О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ Logout, О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ /logout, О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫: $c->log->info('Logout'); $c->logout; $c->response->redirect($c->uri_for("/")); О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫. О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫, О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫ https: $c->log->info('Logout'); $c->logout; my $uri = $c->req->base(); $uri->scheme("https"); $c->req->base($uri); $c->response->redirect($c->uri_for("/")); О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫-О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫. О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ Catalyst::Plugin::RequireSSL О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫. О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫?
HTTPS on;