2011-07-26 15 views
0

ユーザーが製品を検索できるsymfonyプロジェクトがあります。これは安全でないモジュールから検索する際にうまく動作します。例えば。ランディングページSymfony - HTTPSからHTTPへのリダイレクト後にPOSTパラメータを取得する方法

ユーザーがログインしているときにプロフィール設定を見て、私は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ということですオリジナルのポストパラメータは保持しません!

これは私の実行($ 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(); 

ここで説明したように私には様々なものを試してみました: retaining POST parameters after login page in symfony

をしかしそこに、彼らは、ユーザーにしていない応じてパラメータを保存します。私はPOSTパラメータ配列でそれらが必要です。

答えて

0

httpの性質上、あなたがしたいことは実際には不可能だと思います。
しかし、あなたは確かに回避策を想像することができます。
彼はあなたが引用した投稿を投稿しています:
$ user-> setAttribute( 'param_name'、$ request-> getParameter( 'post_data'));
セットのユーザー属性は
をpost_dataそして、あなたのアクションであとは "構築" することができます$ _POST配列:
$ _POST [ 'テスト'] =の$ this - > getUse() - >のgetAttribute( 'post_data'); またはsfRequest :: setParameter()を使用してください

+0

正しい:httpリダイレクトの後、ブラウザは簡単な取得要求を行います。 – Maerlyn

+0

これは可能ではないことを指摘してくれてありがとう。私はそれについてはわからなかった。 私は今のように動作します。思考を刺激する衝動に感謝します! – cb0

関連する問題