在控制器中,我一直在使用getSchemeAndHttpHost方法来构建另一个控制器的url。
一切都运行顺利,直到我需要通过https。我使用getSchemeAndHttpHost函数获得的所有URL仍然是http。做了一些故障排除,结果是当我使用https和http请求页面时,getScheme函数总是返回http。
我错过了什么吗?
我怎么知道我的控制器是通过http还是https?
修改 - 更多信息
答案 0 :(得分:3)
简短回答
在控制器中添加以下行:
Request::setTrustedProxies(array($request->server->get('REMOTE_ADDR')));
更多细节
经过一番调查,我发现这与Proxies有关... 如果我们检查isSecure功能正在做什么,我们会找到this:调用请求方法 isFromTrustedProxy 来决定是否应返回true或false。
一旦我们知道该问题与代理有关,symfony文档就会详细解释what we should do to trust proxies或how to manage a load balancer or a reverse proxy。在我的情况下,当我使用heroku时,trusting the incoming ip是可行的方法。