Maison >développement back-end >tutoriel php >Comment vérifier de manière fiable la connexion HTTPS lorsque $_SERVER['HTTPS'] n'est pas défini ?

Comment vérifier de manière fiable la connexion HTTPS lorsque $_SERVER['HTTPS'] n'est pas défini ?

DDD
DDDoriginal
2024-12-20 16:48:13409parcourir

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

HTTPS est-il activé : adresser un $_SERVER['HTTPS'] non défini

La vérification de $_SERVER['HTTPS'] reste une approche courante pour vérifier les connexions HTTPS. Cependant, des valeurs non définies dans cette variable sur certains serveurs peuvent entraîner des erreurs. Pour résoudre ce problème, une méthode alternative plus fiable est disponible.

Solution

Cet extrait de code garantit que l'état HTTPS peut être déterminé quelle que soit la disponibilité de $_SERVER['HTTPS'] :

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

Explication

Le code utilise deux conditions pour déterminer HTTPS status :

  • Si $_SERVER['HTTPS'] est défini et que sa valeur n'est pas "off", cela indique que la connexion est sécurisée.
  • Même si $_SERVER[' HTTPS'] n'est pas défini, une vérification de la valeur $_SERVER['SERVER_PORT'] de 443 (le port HTTPS par défaut) confirme une connexion sécurisée. connexion.

Cette méthode prend en compte les problèmes potentiels avec les serveurs IIS et Apache 1.x, où $_SERVER['HTTPS'] peut ne pas être défini même avec des connexions sécurisées.

Compatibilité

Ce code est compatible avec les serveurs IIS et Apache. De plus, il est important de noter qu'il vérifie la connexion entre l'équilibreur de charge et le serveur. Pour les connexions entre le client et l'équilibreur de charge, l'en-tête HTTP_X_FORWARDED_PROTO peut être utilisé, bien qu'il nécessite une implémentation plus complexe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn