gpt4 book ai didi

php - 具有方案路由设置的 Symfony2 无限重定向循环

转载 作者:可可西里 更新时间:2023-11-01 14:01:56 26 4
gpt4 key购买 nike

我有以下带有路由注释的 Controller :

/**
* @Route("/checkout/", name="checkout", schemes = "https")
*/
public function indexAction(Request $request)
{
//...do stuff
}

这在我的开发服务器上运行良好,但是,在我的生产服务器上,我得到了无限重定向路由。我查看了日志,它是由 Symfony 引起的,而不是 Apache。它一遍又一遍地执行此操作,直到我的浏览器停止:

[2014-10-28 17:32:28] request.INFO: Matched route "checkout" (parameters: "_controller": "Symfony\Bundle\FrameworkBundle\Controller\RedirectController::urlRedirectAction", "path": "/checkout/", "permanent": "true", "scheme": "https", "httpPort": "80", "httpsPort": "443", "_route": "checkout") [] []

这没有意义,因为请求的页面是通过 HTTPS 发送的:

https://example.com/checkout/

我在 security.yml 中没有涵盖此内容的 access_control 设置。奇怪的是,所有其他不使用 "schemes = "https"的 Controller 都可以工作。

最佳答案

您的 Symfony 应用程序可能位于终止 SSL(haproxy、nginx)的代理/负载平衡器后面。这些代理通常会添加一个特殊的 header 来告诉应用程序原始请求是通过 HTTPS 发送的。问题是 Symfony 忽略了这个 header ,因为它太容易被欺骗了。

要修复它,请在 $request 启动后将以下行添加到您的 web/app.php 中:

// Trust all requests as they can only come from the load balancer
Request::setTrustedProxies(array($request->server->get('REMOTE_ADDR')));

这将告诉 Symfony 它可以信任模式 header 并且不需要重定向到 HTTPS。

关于php - 具有方案路由设置的 Symfony2 无限重定向循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26619695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com