gpt4 book ai didi

php - Laravel 强制 SSL 给出 'This webpage has a redirect loop'

转载 作者:太空宇宙 更新时间:2023-11-03 12:58:07 25 4
gpt4 key购买 nike

我正在使用 Laravel 4.1,并希望在整个站点范围内强制使用 SSL。我的应用程序部署在 Heroku 上。将此添加到 App::before 或作为过滤器:

if( ! Request::secure())
{
return Redirect::secure(Request::path());
}

但这给了我“这个网页有一个重定向循环”的消息。如果我通过手动输入 https:// 访问某个页面,它会正确地提供该页面;但是任何链接或表单操作都指向 http://,这是我不想要的。

此外,我尝试将 https 参数添加到某些路由,例如:

Route::get('about', ['https', function()
{
// do something
}]);

但这会返回 404 :(

有人可以帮帮我吗?

最佳答案

我遇到了同样的问题,最后通过使用找到了解决方案:

App::before(function($request)
{
if( (Request::header('x-forwarded-proto') <> 'https') && !App::environment('local', 'staging')) {
return Redirect::secure(Request::getRequestUri());
}
});

这是由于 Heroku 在与 Laravel 默认使用的变量不同的变量中传递此信息。

如果您有兴趣获得正确的环境检测,这就是我在 Laravel 和 Heroku 中使用的方法:

$env = $app->detectEnvironment(function() {
if (getenv('LARAVEL_ENV')) {
return getenv('LARAVEL_ENV');
} else {
return 'local'; // Default
}
});

您需要在具有本地、暂存或生产环境的不同服务器中设置“LARAVEL_ENV”环境变量。

有了这两者,生产环境中只强制使用 HTTPS 流量。

关于php - Laravel 强制 SSL 给出 'This webpage has a redirect loop',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23537869/

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