在 Laravel 5 中,您可以使用中间件类为应用程序强制执行 HTTPS。以下是实现此目标的方法:
中间件类:
namespace MyApp\Http\Middleware; use Closure; class HttpsProtocol { public function handle($request, Closure $next) { if (!$request->secure()) { return redirect()->secure($request->getRequestUri()); } return $next($request); } }
应用中间件:
下一步是将此中间件应用于所有传入请求。在 Kernel.php 文件中,将其添加到 $middleware 数组中:
protected $middleware = [ // Existing middleware... // Custom middleware 'MyApp\Http\Middleware\HttpsProtocol', ];
生产环境验证:
提供的中间件将所有 HTTP 请求重定向到 HTTPS,但您可能只想将此行为限制在生产环境中。您可以通过检查应用程序环境来做到这一点:
if (!$request->secure() && App::environment() === 'production') { return redirect()->secure($request->getRequestUri()); }
Cloudflare 注意事项:
如果您使用 Cloudflare,您可能会遇到重定向循环,因为 Cloudflare 转发使用 HTTP 的请求。要解决此问题,请将以下行添加到您的中间件中:
$request->setTrustedProxies([$request->getClientIp()]);
Web Group (Laravel v5.3 ):
而不是将其添加到 $middleware数组,您可以将其添加到 Kernel.php 中的 web 组中:
protected $middlewareGroups = [ 'web' => [ // ... // Custom middleware 'MyApp\Http\Middleware\HttpsProtocol', ], ];
记住默认情况下,网络组应用于所有路由。
附加说明:
以上是如何使用中间件在 Laravel 5 中强制使用 HTTPS?的详细内容。更多信息请关注PHP中文网其他相关文章!