我在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);
// ...