Maison > développement back-end > tutoriel php > Comment puis-je déterminer de manière fiable l'état de la connexion HTTPS sans utiliser $_SERVER['HTTPS'] ?

Comment puis-je déterminer de manière fiable l'état de la connexion HTTPS sans utiliser $_SERVER['HTTPS'] ?

DDD
Libérer: 2024-12-05 21:39:11
original
1014 Les gens l'ont consulté

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

Détermination de l'état de la connexion HTTPS sans $_SERVER['HTTPS']

Lors d'une tentative de vérification de la sécurité d'une connexion serveur à l'aide de $_SERVER[ 'HTTPS'], vous pouvez rencontrer des scénarios dans lesquels la variable n'est pas définie, entraînant des erreurs. Pour surmonter ce problème, envisagez une solution alternative qui donne systématiquement des résultats fiables.

Code amélioré pour la détection HTTPS

Pour déterminer l'état de la connexion sans compter sur $_SERVER['HTTPS '], implémentez le code suivant :

function isSecure() {
  return
    (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
    || $_SERVER['SERVER_PORT'] == 443;
}
Copier après la connexion

Compatibilité et Considérations

Ce code présente une compatibilité avec diverses configurations de serveur, y compris IIS.

Selon la documentation PHP.net et les commentaires des utilisateurs :

  • Si le script est accessible via HTTPS, $_SERVER['HTTPS'] contiendra une valeur non vide.
  • Pour IIS avec ISAPI, $_SERVER['HTTPS'] peut être défini sur "off" lors des connexions non HTTPS.
  • Les serveurs Apache 1.x peuvent ne pas définir $_SERVER['HTTPS'] même pour les connexions sécurisées.

Points supplémentaires

  • Connexions établies sur le port 443 indique généralement des sockets sécurisées. Cependant, ce n'est qu'une convention, pas une garantie.
  • Si un équilibreur de charge existe entre le client et le serveur, le code n'évaluera pas la connexion client-équilibreur de charge, mais plutôt l'équilibreur de charge- connexion au serveur. Pour évaluer le premier, envisagez d'utiliser l'en-tête HTTP_X_FORWARDED_PROTO, bien que cette méthode implique une plus grande complexité.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal