Catalyst, redirect и https

Serg Gulko s.gulko at gmail.com
Fri Nov 11 09:54:46 PST 2011


Есть приложение на 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 тоже не
сильно помог.
Кто сталкивался с такой проблемой и знает как решить ее малой кровью?


More information about the Kiev-pm mailing list