Maison >développement back-end >tutoriel php >Comment puis-je détecter de manière fiable l'utilisation de HTTPS sans compter sur $_SERVER['HTTPS'] ?

Comment puis-je détecter de manière fiable l'utilisation de HTTPS sans compter sur $_SERVER['HTTPS'] ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-20 04:20:12904parcourir

How Can I Reliably Detect HTTPS Usage Without Relying on $_SERVER['HTTPS']?

Méthode alternative pour déterminer l'utilisation HTTPS sans $_SERVER['HTTPS']

Les approches traditionnelles pour vérifier les connexions HTTPS impliquent de vérifier la valeur de $ _SERVEUR['HTTPS']. Cependant, sur certaines configurations de serveur, cette variable peut ne pas être définie, entraînant des erreurs.

Solution

Pour résoudre ce problème, la fonction suivante fournit une alternative fiable pour détermination des connexions HTTPS :

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

Compatibilité et Explication

  • Le code s'adapte aux configurations IIS où $_SERVER['HTTPS'] est défini sur "off" pour les requêtes non HTTPS.
  • De plus, il vérifie le serveur port (généralement 443 pour les connexions HTTPS) comme sauvegarde si $_SERVER['HTTPS'] n'est pas défini ou invalide.

Remarque pour les équilibreurs de charge

Ce code teste uniquement les connexions entre le serveur et l'équilibreur de charge si un équilibreur de charge est présent. Pour tester les connexions entre le client et l'équilibreur de charge, l'en-tête HTTP_X_FORWARDED_PROTO doit être utilisé, bien que cette approche soit 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