Heim >Backend-Entwicklung >PHP-Tutorial >Wie erzwinge ich HTTPS in Laravel-Anwendungen?

Wie erzwinge ich HTTPS in Laravel-Anwendungen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-11 15:57:141005Durchsuche

How to Force HTTPS in Laravel Applications?

Weiterleitung zu HTTPS in Laravel

In Laravel kann das Erzwingen von HTTPS für Ihre Anwendung durch die Verwendung einer Middleware-Klasse erreicht werden. Hier ist eine Beispielimplementierung:

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); 
    }
}

Um diese Middleware zu aktivieren, fügen Sie sie der Middleware-Gruppe in der Datei Kernel.php hinzu:

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

Standardmäßig wird die Web-Middleware-Gruppe angewendet auf alle Routen, daher ist keine weitere Konfiguration erforderlich.

Cloudflare Überlegungen

Wenn Sie Cloudflare verwenden, kann es zu einer Umleitungsschleife kommen. Dies liegt daran, dass Cloudflare HTTP-Anfragen mit einem „X-Forwarded-Proto“-Header weiterleitet, der HTTPS angibt. Um dieses Problem zu beheben, fügen Sie die folgende Zeile zu Ihrer Middleware hinzu:

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

Dies vertraut der von Cloudflare bereitgestellten IP und dem Header und unterbricht die Schleife.

Updates für Laravel-Versionen< /h3>

Für Laravel-Versionen ab 5.3: Fügen Sie die Middleware-Klasse zum „Web“ hinzu. Middleware-Gruppe in der Datei Kernel.php.

Für Laravel-Versionen ab 5.7:

  • Verwenden Sie App::environment() anstelle von env('APP_ENV') für umgebungsbasierte Überprüfungen .
  • URL::forceScheme('https') leitet nicht um, sondern erstellt lediglich Links mit HTTPS.

Das obige ist der detaillierte Inhalt vonWie erzwinge ich HTTPS in Laravel-Anwendungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn