Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann man zuverlässig nach einer HTTPS-Verbindung suchen, wenn $_SERVER['HTTPS'] nicht definiert ist?

Wie kann man zuverlässig nach einer HTTPS-Verbindung suchen, wenn $_SERVER['HTTPS'] nicht definiert ist?

DDD
DDDOriginal
2024-12-20 16:48:13345Durchsuche

How to Reliably Check for HTTPS Connection When $_SERVER['HTTPS'] is Undefined?

Ist HTTPS aktiviert: Adressierung nicht definierter $_SERVER['HTTPS']

Die Überprüfung von $_SERVER['HTTPS'] bleibt ein gängiger Ansatz zur Überprüfung von HTTPS-Verbindungen. Allerdings können undefinierte Werte in dieser Variable auf bestimmten Servern zu Fehlern führen. Um dieses Problem zu beheben, steht eine zuverlässigere alternative Methode zur Verfügung.

Lösung

Dieses Code-Snippet stellt sicher, dass der HTTPS-Status unabhängig von der Verfügbarkeit von $_SERVER['HTTPS'] ermittelt werden kann:

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

Erklärung

Der Code verwendet zwei Bedingungen, um HTTPS zu bestimmen Status:

  • Wenn $_SERVER['HTTPS'] definiert ist und sein Wert nicht „aus“ ist, zeigt dies an, dass die Verbindung sicher ist.
  • Auch wenn $_SERVER[' HTTPS'] undefiniert ist, bestätigt eine Überprüfung auf den $_SERVER['SERVER_PORT']-Wert von 443 (den Standard-HTTPS-Port) eine sichere Verbindung Verbindung.

Diese Methode berücksichtigt die potenziellen Probleme mit IIS- und Apache 1.x-Servern, bei denen $_SERVER['HTTPS'] möglicherweise nicht einmal bei sicheren Verbindungen festgelegt wird.

Kompatibilität

Dieser Code ist mit IIS- und Apache-Servern kompatibel. Darüber hinaus ist es wichtig zu beachten, dass die Verbindung zwischen dem Load Balancer und dem Server überprüft wird. Für Verbindungen zwischen dem Client und dem Load Balancer kann der Header HTTP_X_FORWARDED_PROTO verwendet werden, erfordert jedoch eine komplexere Implementierung.

Das obige ist der detaillierte Inhalt vonWie kann man zuverlässig nach einer HTTPS-Verbindung suchen, wenn $_SERVER['HTTPS'] nicht definiert ist?. 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