Symfony - Как получить параметр POST после перенаправления с HTTPS на HTTP - PullRequest
0 голосов
/ 26 июля 2011

У меня есть проект Symfony, где пользователь может искать продукты. Это отлично работает при поиске из незащищенного модуля. Например. целевая страница.

Теперь, когда пользователь вошел в систему, просматривая настройки своего профиля, я использую соединение https. Моя проблема в том, что когда я что-то ищу, меня перенаправляют на версию http, и при этом мои параметры POST теряются, и поиск не работает.

Это часть журнала при поиске по http:

 [info] {sfFilterChain} Executing filter "sfRenderingFilter"
 [info] {sfFilterChain} Executing filter "sslFilter"
 [info] {sfFilterChain} Executing filter "sfExecutionFilter"

Так выглядит при поиске с защищенного сайта https:

 [info] {sfFilterChain} Executing filter "sfRenderingFilter"
 [info] {sfFilterChain} Executing filter "sslFilter"
 [info] {sfFrontWebController} Redirect to "http://project.localhost/search"
 [info] {sfWebResponse} Send status "HTTP/1.1 301 Moved Permanently"
 [info] {sfWebResponse} Send header "Location: http://project.localhost/search"
 ...
 [info] {sfFilterChain} Executing filter "sfExecutionFilter"

Проблема в том, что мой sslFilter не сохраняет исходные параметры записи!

Это код внутри моего execute ($ filterChain), где я меняю https на http. Как я могу сохранить параметры POST.

if ($redirect) {
    $non_secure_url = str_replace('https', 'http', $request->getUri());
    return $context->getController()->redirect($non_secure_url, 0, 301);
}
$filterChain->execute();

Я пробовал разные вещи, как описано здесь: сохранение параметров POST после страницы входа в Symfony

Но там они сохраняют параметр в пользователе, а не в ответе. Они нужны мне в массиве параметров POST.

1 Ответ

0 голосов
/ 26 июля 2011

Я думаю, что то, что вы хотите сделать, на самом деле невозможно, из-за природы http.
Но вы, конечно, можете представить себе обходной путь.
основываясь на сообщении, которое вы цитировали:
$ user-> setAttribute ('param_name', $ request-> getParameter ('post_data'));
установить атрибут пользователя post_data
И после этого вы можете «построить» массив $ _Post:
$ _POST ['test'] = $ this-> getUse () -> getAttribute ('post_data'); или используйте sfRequest :: setParameter ()

...