Symfony2:getScheme不返回'https'

mik*_*ika 5 https reverse-proxy symfony

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

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

我错过了什么 ?

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

编辑 - 更多信息

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

mik*_*ika 5

简答

在控制器中添加以下行:

Request::setTrustedProxies(array($request->server->get('REMOTE_ADDR')));
Run Code Online (Sandbox Code Playgroud)

更多细节

一些调查后,我发现这有做代理...如果我们检查一下的isSecure功能是干什么的,我们发现这个:该请求方法isFromTrustedProxy被调用,以确定是否真的还是假的,应退还。

一旦我们知道问题与代理有关,symfony 文档就会详细解释我们应该如何信任代理如何管理负载均衡器或反向代理。就我而言,当我使用 heroku 时,信任传入的 ip是要走的路。