Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich den HTTPS-Verbindungsstatus zuverlässig ermitteln, ohne $_SERVER['HTTPS'] zu verwenden?

Wie kann ich den HTTPS-Verbindungsstatus zuverlässig ermitteln, ohne $_SERVER['HTTPS'] zu verwenden?

DDD
DDDOriginal
2024-12-05 21:39:111011Durchsuche

How Can I Reliably Determine HTTPS Connection Status Without Using $_SERVER['HTTPS']?

Bestimmen des HTTPS-Verbindungsstatus ohne $_SERVER['HTTPS']

Beim Versuch, die Sicherheit einer Serververbindung mit $_SERVER[ zu ermitteln 'HTTPS'] kann es vorkommen, dass die Variable nicht definiert ist, was zu Fehlern führt. Um dieses Problem zu lösen, sollten Sie eine alternative Lösung in Betracht ziehen, die stets zuverlässige Ergebnisse liefert.

Erweiterter Code für die HTTPS-Erkennung

Um den Verbindungsstatus zu ermitteln, ohne sich auf $_SERVER['HTTPS verlassen zu müssen '], implementieren Sie den folgenden Code:

function isSecure() {
  return
    (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
    || $_SERVER['SERVER_PORT'] == 443;
}

Kompatibilität und Überlegungen

Dieser Code weist Kompatibilität mit verschiedenen Serverkonfigurationen auf, einschließlich IIS.

Laut PHP.net-Dokumentation und Benutzerfeedback:

  • Wenn das Skript Wird über HTTPS zugegriffen, enthält $_SERVER['HTTPS'] einen nicht leeren Wert.
  • Für IIS mit ISAPI, $_SERVER['HTTPS'] kann bei Nicht-HTTPS-Verbindungen auf „Aus“ gesetzt sein.
  • Apache 1.x-Server definieren möglicherweise $_SERVER['HTTPS'] nicht, selbst für sichere Verbindungen.

Zusätzliche Punkte

  • Verbindungen hergestellt am Port 443 weist normalerweise auf sichere Sockets hin. Dies ist jedoch nur eine Konvention und keine Garantie.
  • Wenn zwischen dem Client und dem Server ein Load Balancer vorhanden ist, bewertet der Code nicht die Client-zu-Load Balancer-Verbindung, sondern die Load Balancer- Verbindung zum Server. Um Ersteres auszuwerten, sollten Sie die Verwendung des HTTP_X_FORWARDED_PROTO-Headers in Betracht ziehen, obwohl diese Methode eine größere Komplexität mit sich bringt.

Das obige ist der detaillierte Inhalt vonWie kann ich den HTTPS-Verbindungsstatus zuverlässig ermitteln, ohne $_SERVER['HTTPS'] zu verwenden?. 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