Symfony2:getScheme不返回'https'

时间:2015-10-30 12:38:11

标签: symfony https reverse-proxy

在控制器中,我一直在使用getSchemeAndHttpHost方法来构建另一个控制器的url。

一切都运行顺利,直到我需要通过https。我使用getSchemeAndHttpHost函数获得的所有URL仍然是http。做了一些故障排除,结果是当我使用https和http请求页面时,getScheme函数总是返回http。

我错过了什么吗?

我怎么知道我的控制器是通过http还是https?

修改 - 更多信息

  1. 我确保使用有效的证书运行测试。
  2. 如果我在Request对象中运行isSecure方法,我总是会弄错。

1 个答案:

答案 0 :(得分:3)

简短回答

在控制器中添加以下行:

Request::setTrustedProxies(array($request->server->get('REMOTE_ADDR')));

更多细节

经过一番调查,我发现这与Proxies有关... 如果我们检查isSecure功能正在做什么,我们会找到this:调用请求方法 isFromTrustedProxy 来决定是否应返回true或false。

一旦我们知道该问题与代理有关,symfony文档就会详细解释what we should do to trust proxieshow to manage a load balancer or a reverse proxy。在我的情况下,当我使用heroku时,trusting the incoming ip是可行的方法。