ユーザーが製品を検索できる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パラメータ配列でそれらが必要です。
正しい:httpリダイレクトの後、ブラウザは簡単な取得要求を行います。 – Maerlyn
これは可能ではないことを指摘してくれてありがとう。私はそれについてはわからなかった。 私は今のように動作します。思考を刺激する衝動に感謝します! – cb0