Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich den HTTPS-Verbindungsstatus in PHP zuverlässig ermitteln?

Wie kann ich den HTTPS-Verbindungsstatus in PHP zuverlässig ermitteln?

Susan Sarandon
Susan SarandonOriginal
2024-12-03 19:17:13849Durchsuche

How Can I Reliably Determine HTTPS Connection Status in PHP?

Bestimmen des HTTPS-Verbindungsstatus über $_SERVER['HTTPS'] hinaus

In vielen Online-Tutorials wird empfohlen, $_SERVER['HTTPS'] zu überprüfen, um dies festzustellen ob eine Serververbindung über HTTPS gesichert ist. Allerdings ist $_SERVER['HTTPS'] auf bestimmten Servern möglicherweise nicht definiert, was zu Fehlern führt.

Alternative Variable für die HTTPS-Erkennung

Um dieses Problem zu beheben, sollten Sie Folgendes in Betracht ziehen Verwenden der Funktion isSecure(), die eine zuverlässige Anzeige des HTTPS-Verbindungsstatus liefert, selbst wenn $_SERVER['HTTPS'] vorhanden ist undefiniert:

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

Kompatibilität und Überlegungen

  • IIS-Kompatibilität: Diese Funktion funktioniert mit IIS-Servern.
  • **Undefinded $_SERVER['HTTPS']:** Trotz der Dokumentation, die dies besagt $_SERVER['HTTPS'] sollte für HTTPS-Verbindungen festgelegt werden, es kann bei bestimmten Konfigurationen undefiniert sein.
  • Apache 1.x-Server: Apache 1.x-Server definieren $_SERVER möglicherweise nicht ['HTTPS'] für sichere Verbindungen.
  • Port 443-Prüfung: Konvention schlägt Verbindungen vor Die auf Port 443 erstellten Dienste verwenden normalerweise sichere Sockets.

Load Balancer und HTTP_X_FORWARDED_PROTO

Beachten Sie, dass diese Funktion die Verbindung zwischen dem Client und einer potenziellen Last nicht testet Balancer. Um dies zu überprüfen, kann der HTTP_X_FORWARDED_PROTO-Header verwendet werden, seine Implementierung ist jedoch komplexer.

Das obige ist der detaillierte Inhalt vonWie kann ich den HTTPS-Verbindungsstatus in PHP zuverlässig ermitteln?. 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