Symfony 2 Post/Redirect/Get 模式重定向到 HTTPS 问题


Symfony 2 Post/Redirect/Get pattern redirect to HTTPS issue

我在Symfony 2中使用PRG模式,以避免在单击后退按钮后显示"确认表单重新提交"页面。当网站处于 http://状态时一切正常,但是当网站(生产)处于 https://时,此模式不起作用,并且"确认表单重新提交"再次出现:(

基本上我有页面A,B,C。

A:表格

B:处理表单并将 303 重定向到 C

C:显示一些页面

我在Symfony中进行重定向,如下所示:

return $this->redirect('confirmation', 303);

在我包括的所有操作的路线中:

schemes="https", host="%secured_host_name%"

如何重定向以使其也适用于 HTTPS://?

由于重定向使用绝对URI,因此必须注意代理服务器(HTTP->HTTPS)和反向代理服务器。如果您的应用程序允许用户使用 SSL 隧道访问您的站点,这也可能导致问题。(您可以使用 Referer 标头来发现用户实际输入的域和端口。

解决方案:在框架配置中将代理添加到trusted_proxies

# app/config/config.yml
# ...
framework:
    trusted_proxies:  [192.0.0.1, 10.0.0.0/8]

或者,如果您不知道您的代理 IP:

// web/app.php
// ...
Request::setTrustedProxies(array('127.0.0.1', $request->server->get('REMOTE_ADDR')));
$response = $kernel->handle($request);
// ...