FAQ n°11192, publiée le 28/07/2015
WEBDEV
Comment effectuer une redirection HTTP vers HTTPS lors du lancement d'un site sécurisé par un certificat SSL ?
L'accès à un site dynamique sécurisé hébergé sur un serveur web disposant d'un certificat SSL doit se faire avec le protocole HTTPS. Par exemple : 
https://mon-site.com

Si par erreur le lancement se fait en utilisant uniquement HTTP (http://mon-site.com), il est possible d'effectuer une redirection automatique en utilisant le code suivant, dans le code d'initialisation serveur de la première page dynamique du projet : 

SI __SysEnvironnement("SERVER_PORT_SECURE") <> 1 ALORS
ScriptAffiche(PageAdresse("",paSECURISEE)) 
FinProgramme() // Arrêt session si plus d'autre traitement
FIN

Avec __SysEnvironnement correspondant à la procédure interne suivante : 

PROCEDURE INTERNE __SysEnvironnement(sNomVariable est une chaîne)
sRésultat est une chaîne = SysEnvironnement(sNomVariable)
nPosition est un entier = Position(sRésultat, "=", 1)
SI sRésultat <> "" _ET_ nPosition > 0 ALORS
RENVOYER sRésultat[[nPosition+1 A]]
SINON
RENVOYER ""
FIN
FIN


Une fois le site déployé avec ce code, le lancement du site peut se faire indifféremment en http ou https, le site dynamique basculera automatiquement en SSL.

Dans le cas d'un site ayant uniquement certaines pages accessibles en HTTPS, c'est la fonction WLangage "SSLActive()" qui devra être utilisée.

Le même principe peut être appliqué aux méthodes GET d'un webservice REST pour lequel on voudrait retourner une réponse en HTTPS lorsque l'appel a été fait en HTTP. Le code du projet du webservice REST pourrait faire la redirection : 

SI 1 <> __SysEnvironnement("SERVER_PORT_SECURE") ALORS
ScriptAffiche("https://" + __SysEnvironnement ("SERVER_NAME") + __SysEnvironnement ("SCRIPT_NAME"), __SysEnvironnement ("QUERY_STRING"), Vrai)
FinProgramme() // Arrêt session si plus d'autre traitement
FIN