首页 >后端开发 >php教程 >如何在 Laravel 应用程序中强制使用 HTTPS?

如何在 Laravel 应用程序中强制使用 HTTPS?

Linda Hamilton
Linda Hamilton原创
2024-12-11 15:57:141005浏览

How to Force HTTPS in Laravel Applications?

在 Laravel 中重定向到 HTTPS

在 Laravel 中,可以通过利用中间件类来在应用程序上强制使用 HTTPS。下面是一个示例实现:

namespace MyApp\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\App;

class HttpsProtocol {

    public function handle($request, Closure $next)
    {
            if (!$request->secure() && App::environment() === 'production') {
                return redirect()->secure($request->getRequestUri());
            }

            return $next($request); 
    }
}

要激活此中间件,请将其添加到 Kernel.php 文件中的中间件组:

protected $middleware = [
    // ...
    'MyApp\Http\Middleware\HttpsProtocol'       
];

默认情况下,应用 Web 中间件组到所有路由,因此无需进一步配置。

Cloudflare注意事项

如果您使用 Cloudflare,您可能会遇到重定向循环。这是因为 Cloudflare 转发带有指示 HTTPS 的“X-Forwarded-Proto”标头的 HTTP 请求。要解决此问题,请将以下行添加到您的中间件中:

$request->setTrustedProxies([$request->getClientIp()]);

这信任 Cloudflare 提供的 IP 和标头,从而打破循环。

Laravel 版本更新

Laravel 版本更新

/h3>

    对于 Laravel 版本 5.3 及以上:将中间件类添加到Kernel.php 文件中的“web”中间件组。
  • 对于 Laravel 版本 5.7 及以上:
使用 App::environment() 而不是 env('APP_ENV') 作为环境基于检查。URL::forceScheme('https') 不会重定向,而只是构造链接HTTPS。

以上是如何在 Laravel 应用程序中强制使用 HTTPS?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn