我在Symfony 2中使用PRG模式以避免显示'确认表单重新提交"单击后退按钮后的页面。当站点在http://上时,一切正常,但当站点(生产)在https://时,此模式不起作用,并且“确认表单重新提交”#39;再次出现:(
基本上我有A,B,C页。
A:表格
B:处理表单并将303重定向到C
C:显示一些页面
我在这样的Symfony中进行重定向:
return $this->redirect('confirmation', 303);
以及我所有行动的路线,包括:
schemes="https", host="%secured_host_name%"
如何重定向以使其在HTTPS上运行?//也是?
答案 0 :(得分:0)
由于重定向使用绝对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);
// ...